listView或者gridView异步加载图片错乱问题
2017-08-04 11:24
267 查看
比如一页正常显示7个item ,当向下滑动一个条目的时候,由于listView的复用原则,如果不异步加载,虽然第一块和第八块指向的是同一个View,但是此时已经刷上了 第8个item 的数据, 而此时的第一块数据 也显示的是第八块数据,只是我们看不到而已,因为此时第一块和第八块指向的是同一块内存。
但是当出现异步加载的时候,如果2个item加载图片 有快有慢 ,所以,慢的一块没加载出来 会显示快的一块,因为他们指向的是同一块内存,所以当设置tag的时候,tag的标示永远是可见的View的url
-------以下是设置viewHolder-----------代码仅供参考--------
1.创建静态类Viewholder 并声明控件
比如:
//空参构造 static class ViewHolder { ImageView image; }
2.在listView的getView 方法中 创建这个viewholder 对象
并且判断convertView 是否为空,如果为空,填充想要展示的item布局,
并且为viewholder 中的控件赋值
3.然后为convertView设置tag
//空参构造 ViewHolder holder = null; String url = getItem(position).toString(); if (convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.item, null); holder.image = (ImageView) convertView.findViewById(R.id.pic); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.image.setImageBitmap(BitmapFactory.decodeFile(url));
----以下是异步加载图片 通过判断tag的方式
// 给 ImageView 设置一个 tag holder.img.setTag(imgUrl); // 预设一个图片 holder.img.setImageResource(R.drawable.ic_launcher); // 通过 tag 来防止图片错位 if (imageView.getTag() != null && imageView.getTag().equals(imageUrl)) { imageView.setImageBitmap(result); }
相关文章推荐
- 解决ListView异步加载图片错乱问题
- 在GridView或者ListView的Adapter中使用Glide加载图片,图片被拉伸问题
- 解决ListView异步加载图片错乱问题 .
- 解决ListView异步加载图片错乱问题 .
- 解决ListView异步加载图片错乱问题
- 解决ListView异步加载图片错乱问题
- 解决ListView异步加载网络图片的各种问题(一)
- Android listview 异步加载图片乱序问题,原因分析及解决方案
- ListView异步加载图片--图片缓存和错位问题解决方案
- 关于ListView中异步加载图片时,图片显示错误的问题
- universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
- listView异步加载图片导致图片错位、闪烁、重复的问题的解决
- ListView的异步加载图片问题与优化
- Listview异步加载缓存图片,解决快速滑动问题
- ListView异步加载图片--图片缓存和错位问题解决方案
- Android ListView异步加载图片乱序问题,原因分析及解决方案
- Android ListView图片异步加载时,图片错位的问题
- Android ListView异步加载图片乱序问题,原因分析及解决方案
- 进一步优化Android ListView GridView中异步加载图片
- Android ListView异步加载图片乱序问题以及解决