嗯,我有一個RecyclerView和一個適配器,一切都很好。 ArrayList數據集中的項目正在定期更新。所以項目和它們的元素以及它們在列表中的位置都會改變。這是通過簡單的排序實現並手動調用這些方法,每當事情發生了:覆蓋RecyclerView.Adapter中的notifyItemChanged動畫
// 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閃爍。 –