我有一个自定义的ImageAdapter,用于在我的活动中包装GridView的项目。
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ArrayList<Integer> mThumbIds = new ArrayList<Integer>();
public ImageAdapter(Context c, ArrayList<Integer> mThumbIds) {
mContext = c;
this.mThumbIds = mThumbIds;
}
public Object getItem(int position) {
return mThumbIds.get(position);
}
public long getItemId(int position) {
return position;
}
@Override
public int getCount() {
return mThumbIds.size();
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds.get(position));
return imageView;
}
public void modifyData (ArrayList<Integer> newData){
getmThumbIds().clear();
for (Integer var : newData){
getmThumbIds().add(var);
}
notifyDataSetChanged();
}
此适配器在我的主Activity中创建,并与GridView相关联。
imageAdapter = new ImageAdapter(this, getIdIngredients());
grilleImagesIngredients = (GridView) findViewById(R.id.grilleImagesIngredients);
grilleImagesIngredients.setAdapter(imageAdapter);
最后我只是想从网格视图中删除所有图像,所以:
imageAdapter.mThumbIds.clear();
imageAdapter.notifyDataSetChanged();
添加对象时,此方法正常工作。通过一些实证测试,我发现它并没有删除网格中的先前图像,只是在它上面绘制新图像。
一旦我从适配器中删除了对象,它们就不再可以在gridView中选择,但我仍然可以看到图像。