【发布时间】:2025-11-28 07:40:01
【问题描述】:
我有一个 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
}
参数“位置”直接来自 ViewHolder。为了弥补位置与我的数据索引不匹配的事实,我使用了“notifyItemRangeChanged”。但是,这样做会摆脱动画。所以我想知道是否有任何方法可以绕过这个,这样我仍然可以拥有正确的位置逻辑以及删除动画。
【问题讨论】:
标签: android kotlin android-recyclerview