因此,想象一下,首先我们在RecyclerView中加载10个项目。添加或删除一个元素可以使我们获得很好的动画效果(适配器具有稳定的ID)。
问题是,我有一个搜索栏,可以查找一些东西,然后结果应替换RecyclerView的当前项目。如果已经有某个项目,那么会有一个不错的“移动”动画。但是,如果所有项目都是新产品,那么会有一个非常难看的淡入过渡,它过渡太快并且看起来像是小故障。是否可以覆盖该动画?我想要淡入淡出但慢一点。
顺便说一句,当查询返回结果时,我在适配器中执行此操作:
mItems.clear();
mItems.addAll(resultItems);
notifyDataSetChanged();
另外,值得一提的是,如果我搜索没有结果,那么我看到RecyclerView为空,然后如果再次得到一些结果,则从空状态到某些结果的过渡看起来还可以。
最佳答案
您可以批量删除项目并将其插入RecyclerView
中。
adapter.notifyItemRangeRemoved(0, mItems.size());
mItems.clear();
mItems.addAll(resultItems);
adapter.notifyItemRangeInserted(0, mItems.size());
编辑:看完您的问题后,您可能不想做我上面建议的事情。相反,您不应清除列表,而应删除一些项目,然后使用
notifyItemRemove(index)
将更改通知给适配器