Android进阶小功能

RecyclerView刷新时候的图片闪烁

2020-07-10  本文已影响0人  因为我的心

一、前言:

1、RecyclerView的adapter在刷新上方法:

二、解决:

1. 问题:recyclerView使用notifyDataSetChanged()刷新时出现图片闪烁?

原因: notifyDataSetChanged()会导致整个itemView刷新,已经测试:相同position刷新其itemView是不同的对象。

例如,刷新后,position为12的用了position为13的itemView,再次刷新时,又用了position为10的itemView,这样每次position上对应的itemview的imageView就会在重设size时发生闪烁

2.解决思路:

用notifyItemRangeInserted()进行增加数据使用的局部刷新,这样原先的itemView就不会重绘
或者用notifyItemRangeChanged()进行单纯的局部刷新。

注意 : 虽然方法是用来局部刷新的,但我们可以把局部刷新变成全部刷新,itemcount设置成list.size()就可以实现不闪烁的全部。

刷新了,但最好加上一句

((SimpleItemAnimator)recyclerView.getItemAnimator()).setSupportsChangeAnimations(false);

这句话会取消recyclerview的动画效果,不然刷新的话的确不会快闪但会有个动画效果,体验也是不好的。

3.最后解决:

  1. recyclerView调用方法取消动画效果
((SimpleItemAnimator)recyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
  1. 刷新列表使用
//进行全部刷新
adapter.notifyItemRangeChanged(0,list.size()) 
上一篇 下一篇

猜你喜欢

热点阅读