使用通用图像加载器时,Listview在notifyDataSetChanged()上闪烁

时间:2014-06-27 07:12:45

标签: android universal-image-loader

我面临的问题在下面给出的链接中提到:

https://github.com/nostra13/Android-Universal-Image-Loader/issues/376

我已经检查了上述链接中的解决方案,似乎下面给出的解决方案正在解决问题:

ImageAware imageAware = new ImageViewAware(imageView, false);
imageLoader.displayImage(imageUri, imageAware);

但如果我将选项传递给上述代码中的displayImage()方法,则会出现同样的闪烁问题。这意味着,以下代码导致问题:

ImageAware imageAware = new ImageViewAware(imageView, false);
imageLoader.displayImage(imageUri, imageAware,options);

当我将“选项”传递给displayImage()方法时,如何停止闪烁问题?

这是我传递给方法的选项:

options = new DisplayImageOptions.Builder().showImageForEmptyUri(R.drawable.empty).showImageOnLoading(R.drawable,loading).showImageOnFail(R.drawable.failed).cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565).imageScaleType(ImageScaleType.IN_SAMPLE_INT).build();

1 个答案:

答案 0 :(得分:0)

解决方案是在图像未更改时不重新加载。

在适配器中getView()执行:

// schedule rendering:
final String path = ... (set path here);
if (holder.lastImageUrl == null || !holder.lastImageUrl.equals(path)
                || holder.headerImageView.getDrawable() == null) {
    // refresh image
    imageLoader.displayImage(imageUri, imageAware);
} else {
    // do nothing, image did not change and does not need to be updated
}

成功(添加ImageLoadingListener)你设置holder.lastImageUrl = path,失败并取消你将holder.lastImageUrl设置为null,以便下次重新加载。