3

我正在使用 volleys NetworkImageViewArrayAdapter中加载图像。

对于我的适配器中的某些项目,我想改用Drawable 资源

不幸的是,设置 ImageResource 似乎对 NetworkImage 没有影响。

    networkImage.setImageResource(R.drawable.mydrawable); // no effect

我尝试使用提供接口的 ImageLoaders get() 方法在没有 NetworkImageView 的情况下工作。不幸的是,视图回收不再有效,图像下载覆盖了已经回收和重用的视图。

    ImageLoader.ImageListener listener = 
    ImageLoader.getImageListener(image, R.drawable.loading, R.drawable.error);
    ImageCacheManager.getImageLoader().get(url,listener);
    // Override´s recycled views image

有什么解决办法吗?

4

1 回答 1

7

如果您只想显示可绘制对象并且根本不为特定项目加载任何图像,这很容易:

public void bind(Item item) {
  if (item.shouldDisplayDrawable()) {
    imageView.setDefaultImageResId(R.drawable.my_drawable); // show your drawable
    imageView.setImageUrl(null, app.getImageLoader()); // and if url == null, Volley will not load any image to replace Default 
  } else {
    imageView.setImageUrl(item.getImageUrl(), app.getImageLoader()); // load image from url
  } 
}

我在我的适配器中尝试了这个,回收工作没有任何问题。你可以继续使用

imageView.setDefaultImageResId(R.drawable.icon_image_default);
imageView.setErrorImageResId(R.drawable.icon_image_error);

imageView您从 url 下载时,它会在加载和出错时显示正确的 drawable。

于 2013-10-19T19:32:24.720 回答