我有一个带有一个包含RecyclerView的片段的Activity1。 选择列表中的项目将启动Activity2,用于修改项目。 在Activity2完成后返回Activity1我观察到RecyclerView首先绘制了Activity2之前的状态(保存旧项状态),然后在onActivityResult中我执行restartLoader(),它传递更新的数据集,然后RecyclerView再次使用new重绘自身数据
此行为的问题是RecyclerView 闪烁,因为它最初绘制旧数据,然后使用新数据重绘自身。假设我总是想在Activity1.onActivityResult()中使用refreshLoader(),有没有一种避免这种闪烁的好方法?
另外一个复杂因素是我使用空视图来显示recycleview是否为空...这会更加闪烁......
答案 0 :(得分:5)
要删除回收站视图上的更新闪烁,您可以使用:
RecyclerView.ItemAnimator animator = mRecyclerView.getItemAnimator();
if (animator instanceof SimpleItemAnimator) {
((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
}
要更新RecyclerView中的项目,您应该使用
notifyItemChanged(int position)
- 通知任何已注册观察员该位置的项目已更改。
而不是notifyDataSetChanged()