我的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); }

09-26 03:27