【发布时间】:2022-12-12 20:53:01
【问题描述】:
我使用带有数据绑定的 Recycler View 来显示路由列表。对于测试,总是(并且只有)10 个项目(Route1 -10)每个 Route 都有一个删除按钮,用于删除用户选择的行(从列表和 RV)。在不滚动的情况下删除第一个或第二个项目时,它工作得很好,我可以删除所有项目。但是在滚动之后,(我认为)适配器将 Position 设置为错误的值并删除了错误的项目。最终程序因 IndexOutOfBoundsException 而崩溃。
我尝试使用其他位置而不是内部位置我从适配器得到:
holder.absoluteAdapterPosition holder.adapterPosition holder.bindingAdapterPosition holder.layoutPosition
不幸的是,它并没有改变结果。
然后我试了:Kotlin RecyclerView delete item. Is this a bug? 效果更好,但在删除列表的最后一项后,适配器位置再次损坏。
最后,我为适配器的视图持有者中的删除按钮编写了 onClicklistener。 现在它有效,但我不明白为什么。有人可以向我解释这种行为吗?
【问题讨论】: