Android:动态去掉RecyclerView动画导致时长累加问题解决
遇到问题以及探索修改的过程:
正常情况下,不设置动画,默认是用DefaultItemAnimator
在这种情况下,我有个需求需要有特殊的几个item的notifyItemChanged或notifyItemInserted或其他局部刷新的通知不要动画。
聪明的你一下就想到了在notifyItemChanged前mRecyclerView.setItemAnimator(null),完了之后再设置回DefaultItemAnimator,运行查看,很好,没有效果。这是因为设置完动画是需要时间的。再修改一下mRecyclerView.setItemAnimator(null)之后把notifyItemChanged放到mRecyclerView.post里面去做,效果是有了。
但是,再多notifyItemChanged几次,你会发现,这个mRecyclerView.post等待的时长会越来越长,这个时长一直在累加的。
网上还有一种方法,不去设置mRecyclerView.setItemAnimator(null),而是使用DefaultItemAnimator的setSupportsChangeAnimations(false);方法,可以使notifyItemChanged没有动画,但是这种方式也会使这个时长累加。
查遍全网,貌似没有人有遇到这种情况?
修改为使用notifyDataSetChanged通知所有数据更新不存在累加的情况,但是会重新刷新所有item以及item会闪烁一下。
使用DefaultItemAnimator的setChangeDuration(0),你会发现,欸,时长没有累加了,只是偶尔会闪烁一下。
接下来就是处理这个闪烁现象。
原本动画是会使o