Java RecyclerView项目删除未正确设置动画

Java RecyclerView项目删除未正确设置动画,java,android,animation,android-recyclerview,Java,Android,Animation,Android Recyclerview,我有一个回收视图,其中显然包含了一些项目。它对所有动画使用DefaultAnimator。 删除项目时,删除会设置动画,但不会按应有的方式进行。问题是,似乎列表的大小先减小了一,然后单击的项目被删除,然后下面的所有项目都向上移动了一。看看我在说什么。 用于移除项目的代码如下所示: MainActivity.events.events.remove(listItems.keyAt(0)); notifyItemRemoved(listItems.keyAt(0)); 其中MainActivity

我有一个
回收视图
,其中显然包含了一些项目。它对所有动画使用
DefaultAnimator
。 删除项目时,删除会设置动画,但不会按应有的方式进行。问题是,似乎列表的大小先减小了一,然后单击的项目被删除,然后下面的所有项目都向上移动了一。看看我在说什么。
用于移除项目的代码如下所示:

MainActivity.events.events.remove(listItems.keyAt(0));
notifyItemRemoved(listItems.keyAt(0));
其中
MainActivity.events.events
包含项目的数据,
listItems.keyAt(0)
包含当前选定的项目

我尝试过的(这些都不起作用):

  • 确保没有其他调用会中断动画(如
    notifyDataSetChanged()
  • 将上述代码直接实现到适配器内项目的
    onClickListener
  • 将数据直接实现到适配器中,而不是其他类
  • 将该位置替换为
    getAdapterPosition()
    或固定值(即
    0
  • 在NotifyItemRemoved()之后使用了
    notifyItemRangeRemoved()
提示:我以前有动画要做,但到今天它已经不工作了

编辑:

如果我从上面给出的代码片段中删除实际的删除命令(即
MainActivity.events.events.remove(listItems.keyAt(0));
),则动画会被删除,但元素不会被实际删除,因此这根本不能解决问题。

您需要遵循以下步骤。1) 获取要删除的项目的位置--2)如果您有一个数组,则从该数组中删除项目,例如(arrayList.remove(position);--3)从回收器中删除项目(adapter.notifyItemRemoved(position);)--将整个代码放在如何删除的外观上这正是我所做的,正如您在上面看到的那样。问题不在于动画不起作用,而在于你在视频中看到的动画不正确。你需要遵循以下步骤。1) 获取要删除的项目的位置--2)如果您有一个数组,则从该数组中删除项目,例如(arrayList.remove(position);--3)从回收器中删除项目(adapter.notifyItemRemoved(position);)--将整个代码放在如何删除的外观上这正是我所做的,正如您在上面看到的那样。问题不在于动画不起作用,只是没有正确地设置动画,正如您在视频中看到的那样。