我的RecyclerView defaultItemAnimator有问题。当我使用notifyItemRemoved()删除其中一项时,我还调用了另一个特定索引上的notifyItemChanged()来更改其中的文本。在移除动画期间,我在其上调用notifyItemChanged()的项目更改了其文本,但执行了一些看起来像傻瓜一样愚蠢的动画。 (它会立即移动到新位置,其余的则平稳地移动到新位置)
当notifyItemRemoved()完成时,有没有办法得到通知,以便我可以调用notifyItemChanged()?
最佳答案
一个可能的解决方案是设置一个处理程序。
获取notifyItemRemoved()和notifyItemChanged()的Animation类的源代码。方法内部应为以下行:
animation.setDuration(getRemoveDuration())
.alpha(0).setListener(new VpaListenerAdapter() {
@Override
public void onAnimationStart(View view) {
dispatchRemoveStarting(holder);
}
在animateRemoveImpl()方法内部。
转到声明
getRemoveDuration()
并获得价值。
在带有getRemoveDuration()的postDelay的处理程序中设置notifyItemChange()。
处理程序可能看起来像:
handler.postDelayed(notifyItemChanged, theDurationValue); }