【发布时间】:2020-08-16 16:29:06
【问题描述】:
嗯,我有一个带有适配器的 RecyclerView,一切正常。 ArrayList 数据集中的项目会定期更新。因此项目及其元素以及它们在列表中的位置会发生变化。这是通过简单的排序并在发生事情时手动调用这些方法来实现的:
// 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,有没有人有一个简单的例子?
提前致谢!
【问题讨论】:
-
您找到解决方案了吗?我尝试使用 .setSupportsChangeAnimation(false),但我仍然使用 notifyItemChanged 眨眼。
标签: android android-recyclerview