首页 > 解决方案 > 处于滚动模式时通知 RecyclerView 适配器的问题

问题描述

我在 Recyclerview 中有项目列表。应用程序中有一个用于特定类型数据的切换按钮。

在 Switch Click 上,我正在调用特定服务和在 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

标签: androidandroid-recyclerviewnotifydatasetchanged

解决方案


最后使用以下步骤解决。

必须清除以前的数据。

必须通知适配器。

如果使用分页,则必须将必要的值存储为默认值。

在新的 api 调用之前完成如下操作:

        if (mAlList != null) {
            mAlList.clear()
        }

        if(mAdapterList!=null)
        {
            mAdapterList!!.notifyDataSetChanged()
        }

        isScrolling=false
        page = 1
        limit = 20
        isLoadMore = false

推荐阅读