如何使用nostra13的UniversalImageLoader重新加载图像数组?

时间:2013-01-30 02:25:53

标签: java android

我正在使用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。

1 个答案:

答案 0 :(得分:3)

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

ImageAdapter imgAdapter;

main_gridview.setAdapter(imgAdapter);

imgAdapter.notifyDataSetChanged();