listview中view复用并异步加载图片时,有可能滚出屏幕的图片加载过慢,导致回收利用的view会显示前面还没有加载完的图片,这样就出现了图片错位
解决办法:
// 给 ImageView 设置一个 tag holder.img.setTag(imgUrl); // 异步任务中通过 tag 来防止图片错位 if (imageView.getTag() != null && imageView.getTag().equals(imageUrl)) { imageView.setImageBitmap(result); }
listview回收利用时,里面的item内容会跟回收的item内容一样(保留被回收item的内容),所以,如果回收前图片已经加载好(holder.img.setTag(imgUrl调用前),新的图片加载需要时间,还是会出现图片重复错位,所以需要回收来后马上设置一张默认图片,或者清除回收前的图片(setBackgroundResource(0))