1

我正在使用 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 的字符串数组,因此当用户单击菜单上的所述按钮时,我有包含新 URLS 的数组,但不确定如何“刷新”图像适配器?

我知道您可以即时将图片“添加”到 gridview,但是如果您可以完全刷新整个数组,我没有在 nostra 的文档中看到。

任何帮助是极大的赞赏。:)

PS。抱歉,如果这个问题的答案很明显,我只进入 android dev 一周左右。

4

1 回答 1

3

我解决了。只需将 ImageUrls 设置为更新图像的字符串数组,然后我在顶部声明 ImageAdapter 对象并在该对象上调用 notifyDataSetChanged() ,如下所示:

ImageAdapter imgAdapter;

main_gridview.setAdapter(imgAdapter);

imgAdapter.notifyDataSetChanged();
于 2013-02-06T14:39:49.870 回答