2
我有一個GridView,它使用一個適配器來設置ImageViews,並且當我打開一個AlertDialog並且專注於它的TextView時,GridView位移圖像。我如何阻止這種情況發生?如何在android應用程序中的gridview中停止位置圖像
import android.content.Context;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class ImageAdapter extends BaseAdapter {
private Context context;
private String[] directory;
public ImageAdapter(Context c, String[] d) {
this.context = c;
this.directory = d;
}
public int getCount() {
return directory.length;
}
public Object getItem(int position) {
return directory[position];
}
public long getItemId(int position) {
return position;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
System.gc();
View v;
if (convertView == null) { // if it's not recycled, initialize some attributes
LayoutInflater li = LayoutInflater.from(context);
v = li.inflate(R.layout.iblock, null);
ImageView iv = (ImageView)v.findViewById(R.id.foodImage);
BitmapFactory.Options bfo = new BitmapFactory.Options();
bfo.inSampleSize = 2;
iv.setImageBitmap(BitmapFactory.decodeFile(directory[position], bfo));
TextView tv = (TextView)v.findViewById(R.id.foodName);
String[] s = directory[position].split("[\\/.]+");
} else {
v = convertView;
}
return v;
}
}
protected Dialog onCreateDialog(int id) {
switch(id) {
case DIALOG_SEARCH_ID:
LayoutInflater factory = LayoutInflater.from(this);
View searchView = factory.inflate(R.layout.searchbar2, null);
final EditText searchfield = (EditText) searchView.findViewById(R.id.searchfield);
ImageButton ib = (ImageButton) searchView.findViewById(R.id.searchbutton);
ib.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), SearchResults.class);
i.putExtra("query", searchfield.getText().toString());
startActivity(i);
}
});
AlertDialog ad = new AlertDialog.Builder(SearchResults.this)
.setView(searchView)
.create();
Window win = ad.getWindow();
win.setGravity(48);
return ad;
}
return null;
}
謝謝,我發現,我也移動了設置的圖像並在if/else下面設置了文本視圖 – Yvonne 2011-05-04 06:51:34
你知道如何關閉視圖回收嗎?因爲我使用了一個asynctask從url加載圖像,並且它不斷移動。 – Tsunaze 2011-09-07 10:01:23