在项目中使用RecycleView作为数据展示列表,并使用DataBinding做RecycleView的数据绑定,其中使用到了ObservableList,当ObservableList发生变化时,调用了ObservableList的addOnListChangedCallback监听,然后在监听中做适配器的notifyDataSetChanged()。
问题描述:当刷新数据的时候,会先用ObservableList.clear()方法清空数据,然后在遍历数据源添加新数据。此时的RecycleView会闪一下,用户体验很不好。
解决方案:RecycleView的itemAnimator属性设为null即可。
1、XML中设置:
<android.support.v7.widget.RecyclerView
...
bind:itemAnimator="@{null}"
...
/>
2、Java中设置:
recycleView.setItemAnimator(null);