解决ListView上拉加载更多图片会闪的问题
2016-02-26 17:07
363 查看
ListView上拉加载更多数据源的时候我们会调用
来更新数据源,但是notifyDataSetChanged()这个方法他会把ListView的Item的数据会重置一次,导致图片会重新填充一次导致出现闪烁现在,
影响体验。
解决办法是:
如果一致,说明该imageView已经加载过,不需要重新加载一次,只加载新的数据,就能解决闪烁的问题了!
/** * 更新adapter数据 * * @param datas */ public void addDatas(List<Hdata> datas) { this.datas.addAll(datas); this.notifyDataSetChanged(); }
来更新数据源,但是notifyDataSetChanged()这个方法他会把ListView的Item的数据会重置一次,导致图片会重新填充一次导致出现闪烁现在,
影响体验。
解决办法是:
final Hdata data = datas.get(position);
if(data.fcover.equals(holder.iv_house.getTag())){ }else{ loader.loadBitmap(data.fcover, new LoadListViewCompleteListener() { @Override public void complete(Bitmap bitmap, ListView listView) { ImageView imageView = (ImageView) listView .findViewWithTag(data.fcover); if(imageView != null){ imageView.setImageBitmap(bitmap); } } }, listView); holder.iv_house.setTag(data.fcover); }上面那个判断语句是判断当前ListView可视的每个Item的的imageView的tag是否于数据源在该位置的url一致(Imageview的setTag是根据url来set的),
如果一致,说明该imageView已经加载过,不需要重新加载一次,只加载新的数据,就能解决闪烁的问题了!
相关文章推荐
- oracle的内存管理(之中的一个)
- jvm参数
- C++标准库及其保留字(关键字)——附:C++标准文档
- 从.txt文件中批量读取图片
- 51单片机系列知识13--1206LCD(1)
- 浅谈AbstractQueuedSynchronizer原理
- struct statfs
- MySQL查看SQL语句执行效率
- java读取CSV表格数据放在实体类中的
- 喝汽水问题
- java注解
- 数据结构与算法基础(二)之线性表的链式存储与指针的概念
- 学习ShaderToy第一天: glsl语言内置函数gl_FragCoord
- 开发参考
- Unity全面优化
- @SuppressLint("DrawAllocation")作用和解决方法
- C语言预处理
- MySQL查看SQL语句执行效率
- 蒙板缓存(结合nehe反射教程看)
- 关于缓存