最近遇到了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

更多相关文章

  1. ImagePicker,Android下的图片选择与裁剪
  2. Android(安卓)系统原生dialog使用
  3. android 图片查看器,可通过多点触控实现缩放
  4. Android常用开源库
  5. Android跳转到系统通知管理页面
  6. Android(安卓)APP 引导页实现-第一次应用进入时加载
  7. Android(安卓)Webview加载www.youtube.com的问题
  8. 添加并客制化Statusbar中图标显示顺序
  9. Android(安卓)开发常用的工具网站

随机推荐

  1. 【contacts】Phonebook电话本
  2. gson使用在android使用例子
  3. 利用Handler来更新android的UI
  4. Android(安卓)封装json数据
  5. android SQLiteDatebase 实践
  6. Android(安卓)LocationManager 使用
  7. android音频、视频、拍照基础操作
  8. 如何去除launcher 上默认的 google searc
  9. Android简介
  10. 理解Android中垃圾回收日志信息