我正在使用nostra13 UniversalImageLoader将一堆图像加载到gridview中并且它的工作非常漂亮,但是当用户点击我的菜单上的项目时,我需要更改图像(不打开新页面,但重新加载/刷新同一页面上的图像)
我正在调用图像加载器:
protected ImageLoader imageLoader;
imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(this));
Bundle bundle = getIntent().getExtras();
imageUrls = bundle.getStringArray(Extra.IMAGES);
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.stub_image)
.showImageForEmptyUri(R.drawable.image_for_empty_url)
.cacheInMemory()
.cacheOnDisc()
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
final GridView main_gridview = (GridView)findViewById(R.id.main_gridview);
main_gridview.setAdapter(new ImageAdapter());
public class ImageAdapter extends BaseAdapter {
@Override
public int getCount() {
return imageUrls.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ImageView imageView;
if (convertView == null) {
imageView = (ImageView) getLayoutInflater().inflate(R.layout.item_grid_image, parent, false);
} else {
imageView = (ImageView) convertView;
}
imageLoader.displayImage(imageUrls[position], imageView, options);
return imageView;
}
}
因为你可以看到Extras.IMAGES是包含各种URL的字符串数组,所以当用户点击菜单上的所述按钮时,我的数组包含新的URL,但我不知道如何'刷新'图像适配器?
我知道你可以动态地“添加”图片到gridview,但我没有在nostra的文档中看到你是否可以完全刷新整个数组..
非常感谢任何帮助。 :)
PS。很抱歉,如果答案显而易见,我只需要一周的时间进入android dev。
答案 0 :(得分:3)
我解决了。只需将ImageUrls设置为我的更新图像的字符串数组,然后我在顶部声明了ImageAdapter对象,并在该对象上调用notifyDataSetChanged(),如下所示:
ImageAdapter imgAdapter;
main_gridview.setAdapter(imgAdapter);
imgAdapter.notifyDataSetChanged();