关于ListView中异步加载图片时,图片显示错误的问题
2014-10-18 18:56
323 查看
http://314858770.iteye.com/blog/1217594
关于ListView的优化网上有不是的文件介绍,比如:
http://shazhuzhu1.iteye.com/blog/985911
也就是使用缓存convertView的形式,避免重新findViewById的时间开销。
这个地方有一种很常见的情况未说明:
当被缓存的convertView里面包含ImageView并且图片数据又是从网上获取的时候,就会出现ListView中某个和多个位置的图片不断变换的问题。
原因是被缓存的convertView并不只是缓存了View的结构,而是把上个View全部内容都缓存了包括图片。这就造成每次都先显示已经出现的图片,然后才被替换为正确的图片。
而图片的不停变换的问题则是如下代码的原因:
Java代码
asyncImageLoader.loadDrawable(stringList.get(position).get()[1], new AsyncImageLoader.ImageCallback() {
@Override
public void imageLoaded(Drawable imageDrawable, String imageUrl) {
if(imageDrawable != null){
imageView.setImageDrawable(imageDrawable);
}
}
});
这是一段异步加载图片的代码。
当ListView被快速滑动时,因为缓存了convertView所以如果有N此调用这个异步加载图片的方法,则此convertView的图片就会被设置N次。
当最后一次显示convertView时,其当前显示的图片则根据前几次异步加载的图片进行显示,优先加载完成的图片被优先显示。
解决方法:
1.不使用缓存的convertView,每次都重新inflate一个新的
2.不使用XML通过代码自己构造convertView,避免掉配置文件的解析时间
关于ListView的优化网上有不是的文件介绍,比如:
http://shazhuzhu1.iteye.com/blog/985911
也就是使用缓存convertView的形式,避免重新findViewById的时间开销。
这个地方有一种很常见的情况未说明:
当被缓存的convertView里面包含ImageView并且图片数据又是从网上获取的时候,就会出现ListView中某个和多个位置的图片不断变换的问题。
原因是被缓存的convertView并不只是缓存了View的结构,而是把上个View全部内容都缓存了包括图片。这就造成每次都先显示已经出现的图片,然后才被替换为正确的图片。
而图片的不停变换的问题则是如下代码的原因:
Java代码
asyncImageLoader.loadDrawable(stringList.get(position).get()[1], new AsyncImageLoader.ImageCallback() {
@Override
public void imageLoaded(Drawable imageDrawable, String imageUrl) {
if(imageDrawable != null){
imageView.setImageDrawable(imageDrawable);
}
}
});
这是一段异步加载图片的代码。
当ListView被快速滑动时,因为缓存了convertView所以如果有N此调用这个异步加载图片的方法,则此convertView的图片就会被设置N次。
当最后一次显示convertView时,其当前显示的图片则根据前几次异步加载的图片进行显示,优先加载完成的图片被优先显示。
解决方法:
1.不使用缓存的convertView,每次都重新inflate一个新的
2.不使用XML通过代码自己构造convertView,避免掉配置文件的解析时间
相关文章推荐
- 关于ListView异步加载图片导致图片显示混乱以及ListView效率问题探讨
- 关于ListView异步加载图片导致图片显示混乱以及ListView ...
- 解决ListView滑动时卡的问题,实现异步加载图片解决
- android listview 滚动时异步加载图片的问题
- android中ListView异步加载图片时的图片错位问题解决方案
- Android listview异步加载图片(线程池,内存缓存,SD卡缓存)优化显示
- android中ListView异步加载图片时的图片错位问题解决方案(1)
- Android ListView图片异步加载显示
- android listview 滚动时异步加载图片的问题
- 解决ListView滑动时卡的问题,实现异步加载图片解决
- android开发中解决ListView异步加载图片错位问题
- 关于ListView (1)——异步加载图片
- 关于异步上传图片以及上传完成后显示缩略图的问题
- 关于ListView (1)——异步加载图片
- Android之ListView异步加载图片且仅显示可见子项中的图片
- 解决ListView异步加载图片错乱问题
- 解决ListView异步加载网络图片的各种问题(二)
- 解决ListView异步加载网络图片的各种问题(二)
- 解决ListView异步加载图片错乱问题
- Listview异步加载缓存图片,解决快速滑动问题