我有一个RecyclerView,我正在尝试实现删除功能。为了获得itemViews的正确位置,我在删除之后调用了notifyItemRangeChanged()。然而,当我这样做的时候,itemView向右滑动并被删除的炫酷动画现在已经消失了。看起来像是notifyItemRangeChanged()截断了notifyItemRemoved()创建的动画。有什么方法可以让动画和项目正确删除吗?
活动代码:
circuitsObject?.circuits?.remove(circuitsObject?.circuits?.get(position))
recyclerView.adapter?.notifyItemRemoved(position)
recyclerView.adapter?.notifyItemRangeChanged(position, circuitsObject?.circuits!!.size)
if (recyclerView.adapter?.itemCount!! == 0) {
loadEmptyUI()
}适配器代码:
class CircuitViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
...
itemView.setOnClickListener { clickListener(circuit) }
itemView.setOnLongClickListener {
onLongClickListener(position)
true
}参数"position“直接来自ViewHolder。为了补偿位置与我的数据的索引不匹配的事实,我使用了"notifyItemRangeChanged“。但是,这样做会去除动画。所以我想知道是否有任何方法可以绕过这一点,这样我仍然可以有正确的位置逻辑以及删除的动画。
发布于 2021-01-03 14:05:38
在调用notifyItemRemoved(...)之后,您不需要调用notifyItemRangeChanged(...)。
https://stackoverflow.com/questions/65546927
复制相似问题