列表在刷新数据的时候,发生数据的闪烁。根据我当前遇到的问题分析。item是由图文上下组成,文字部分有动态添加控件个数(如tag标签一个或者多个)。在加载更多进行刷新列表时,通常我们简单的就使用
notifyDataSetChanged()
然而,这个方法是将整个列表全部刷新一遍。并不适用局部数据刷新。所以,在列表复用的过程中闪现了一下数据不对的情况。
正确的刷新应该是使用局部刷新方法
notifyItemRangeInserted(positionStart ,count)
从positionStart指定的位置开始,刷新count条数据。不需要刷新的数据自然不会重新绘制。
但是这个方法我们发现,它是带有动画的,动画时间肉眼可见的长,依然会被测试人员提bug。
继续查阅相关资料,发现以下这个方法可以去掉动画。
(mRecyclerView?.itemAnimator as DefaultItemAnimator).supportsChangeAnimations = false
前提,这句是必须写在recyclerview设置adapter之前才起作用。
网友评论