最佳答案
我有一个带适配器的回收视图,一切都很好。数组列表数据集中的项正在定期更新。因此,项目和它们的元素以及它们在列表中的位置都发生了变化。这是通过简单的排序和手动调用这些方法实现的,无论何时发生:
// swapping two items
Collections.swap(items, i, j);
itemsAdapter.notifyItemMoved(i, j);
// adding a new one
itemAdapter.notifyItemInserted(items.size());
// when updating valus
itemAdapter.notifyItemChanged(i);
后者是我痛苦的根源。每次更新一个条目,就会触发一个小的“眨眼”动画。
我找到了一些解决办法:
// disabling all animations
recyclerView.getItemAnimator().setSupportsChangeAnimations(false);
// or
// setting the animation duration to zero,
recyclerView.getItemAnimator().setChangeDuration(0);
但是当物品移动(被交换)时,这两种方法都会杀死动画。我只是想重写一个动画,保持这一切的魔力。有什么办法吗?如果它覆盖了 ItemAnimator,有人有一个简单的例子吗?
先谢谢你!