android 解决RecyclerView notifyDataSetChanged刷新闪屏问题(图片刷新)
最近遇到了RecyclerView 在执行notifyDataSetChanged操作时会出现闪屏,图片刷新,然后根据网上资料提示使用 修改动画,设置动画时间
recyclerView.getItemAnimator().setAddDuration(0);
recyclerView.getItemAnimator().setChangeDuration(0);
recyclerView.getItemAnimator().setMoveDuration(0);
recyclerView.getItemAnimator().setRemoveDuration(0);
recyclerView.getItemAnimator().setSupportsChangeAnimations(false);
以上方法均无效果。
后查找原因:原来notifyDataSetChanged 刷新时,图片会重新加载,刷新操作时图片会线变为占位图,然后再重新加载。
解决办法:在图片控件第一次设置图片时,给控件设置tag,下一次加载时,先判断tag是否存在,存在的话就不重新加载。
eg:
public void onBindViewHolder(RackHolder holder, int position) {
String imgPath="www.baidu.com/test.png";String tag= (String) holder.img.getTag();
if (!uri.eques(tag)){
holder.img.setTag(imgPath);
//设置图片
}
}
2017-03-23更新:
还有一种情况:当我们使用瀑布流效果时,通常一个页面展示的item超过5个,而recycler默认存储的数量为5个,当大于5个时,执行notifyDataSetChanged 会导致页面刷新,因为此时执行onCreateViewHolder 方法,所以当数量大于5个时,建议使用notifyItemInserted 和notifyItemRangeChange 来更新页面。(并且包含settag)
参考资料:http://blog.csdn.net/issingleman/article/details/52717652
更多相关文章
- ImagePicker,Android下的图片选择与裁剪
- Android(安卓)系统原生dialog使用
- android 图片查看器,可通过多点触控实现缩放
- Android常用开源库
- Android跳转到系统通知管理页面
- Android(安卓)APP 引导页实现-第一次应用进入时加载
- Android(安卓)Webview加载www.youtube.com的问题
- 添加并客制化Statusbar中图标显示顺序
- Android(安卓)开发常用的工具网站