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);)--将整个代码放在如何删除的外观上这正是我所做的,正如您在上面看到的那样。问题不在于动画不起作用,只是没有正确地设置动画,正如您在视频中看到的那样。