RecyclerView IndexOutOfBoundsException

RecyclerView 在使用的时候发生:
 java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder
翻译为:
角标越界,检测到不一致。无效的视图保持架适配器位置视图保持架

当RecyclerView遇到Inconsistency detected崩溃时

自我分析:
使用场景实在 SwipReflashLayout 进行下拉刷新和上拉加载的时候,正常请求比较慢,可以多次请求,由于网络的不稳定,请求的数据可能会有并发操作,对同一个数据进行处理。导致recyclerview adpter里面的 数据集和 外部的数据集不一致。eg : 加载 和 刷新 同时操作 ,会有 该问题。

解决方式: 在 下拉刷新 或者 上拉加载的时候 不可进行网络请求,一般 刷新框架 都有对应的方法,直接调用即可。

显示的内容:
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{73b73d7 position=12 id=-1, oldPos=-1, pLpos:-1 no parent}
        at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:5297)
        at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5479)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5440)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5436)
        at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2224)
        at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1551)
        at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1511)
        at android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1325)
        at android.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:1061)
        at android.support.v7.widget.RecyclerView.scrollByInternal(RecyclerView.java:1695)
        at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2883)
        at android.view.View.dispatchTouchEvent(View.java:10011)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2833)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2504)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2519)
        at com.scwang.smartrefresh.layout.SmartRefreshLayout.dispatchTouchEvent(SmartRefreshLayout.java:1005)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2519)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2519)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2519)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2519)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2519)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2844)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2519)
        at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2840)
        at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1853)
        at android.app.Activity.dispatchTouchEvent(Activity.java:3061)
        at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2801)
        at android.view.View.dispatchPointerEvent(View.java:10246)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5447)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5283)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4721)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4774)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4740)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4882)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4748)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4939)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4721)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4774)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4740)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4748)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4721)
        at android.view.ViewRootImpl.delive
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 孩子们,属于你们的节日,祝每个宝贝节日快乐!今天,让我们一起难忘今天,难忘童年。让我们感恩爸爸妈妈!感谢家委会!感...
    吴吉鑫阅读 3,405评论 0 1
  • 图文 | 墨尔本十刀姐 进入2018年以后,十刀姐的呼噜声与日俱增,终于大到让身边的人失眠的程度。想了各种办法,比...
    墨尔本十刀姐阅读 4,518评论 10 6
  • 本来打算今天好好给家长发微信、短信续班,然而并没有。经常这样,总把计划好的事情放在最后干,到最后突然发生另外的事情...
    枫叶邦邦主阅读 780评论 0 0