我在Recyclerview中有项目清单。应用程序中有一个“切换”按钮,用于特定类型的数据。
在单击开关时,我正在调用特定服务,并且正在recyclerview中设置新数据。
以上操作正常,但是当我在滚动recyclerview之后执行相同操作时,或者当我的recyclerview处于滚动模式时,出现以下错误:
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{9dea1e position=24 id=-1, oldPos=-1, pLpos:-1 no parent} androidx.recyclerview.widget.RecyclerView
最后通过以下步骤解决。
必须清除以前的数据。
必须通知适配器。
如果使用分页,则必须将必要的值存储为默认值。
在进行新的api调用之前,请完成以下操作:
if (mAlList != null) {
mAlList.clear()
}
if(mAdapterList!=null)
{
mAdapterList!!.notifyDataSetChanged()
}
isScrolling=false
page = 1
limit = 20
isLoadMore = false
IndexOutOfBoundsException:
为此,您需要使用接口添加onClickListener,不要在onBindViewHolder中使用它,因为它将创建类似这样的异常。谢谢