作者:liu | 来源:互联网 | 2023-05-25 15:58
1> 小智..:
你可以做很少的修复
你的观看者几乎没用.您必须按照以下方式使用它
ViewHolder viewHolder;
if (view == null) {
viewHolder = new ViewHolder();
viewHolder.image = (ImageView) view.findViewById(R.id.capsule_media_list_item_thumbnail_1);
view.setTag(viewHolder);
}else{
viewHolder = view.getTag(viewHolder);
}
您应该只声明ImageLoader和DisplayImageOptions实例一次.可能在构造函数中.
ImageLoader imageLoader = ImageLoader.getInstance();
DisplayImageOptions optiOns= new DisplayImageOptions.Builder().cacheInMemory(true)
.cacheOnDisc(true).resetViewBeforeLoading(true)
.showImageForEmptyUri(fallbackImage)
.showImageOnFail(fallbackImage)
.showImageOnLoading(fallbackImage).build();
在获取视图中,您只需加载图像,如下所示
编辑:
我没有使用过ImageAware.你必须这样使用.
ImageAware imageAware = new ImageViewAware(viewHolder.image, false);
imageLoader.displayImage(imageUri, imageAware,options);
这里的答案说这确实是UIL的一个问题,在1.9版本中得到了解决.
编辑2:
我在Github上跟踪了有关该问题的讨论,发现这个答案可以手动检查图像网址.它建议做以下事情
//lets prevent "blinking" by "saving URL tag" hack
if (viewHolder.image.getTag() == null ||
!viewHolder.image.getTag().equals(imageUri)) {
//we only load image if prev. URL and current URL do not match, or tag is null
ImageAware imageAware = new ImageViewAware(viewHolder.image, false);
imageLoader.displayImage(imageUri, imageAware,options);
viewHolder.image.setTag(imageUri);
}