• RecycleView Bug:java.lang.IndexOutOfBoundsException: Inconsistency detected.


    今天使用RecyclerView时,上下两个RecyclerView,在实现下拉刷新时,报错:

     java.lang.IndexOutOfBoundsException: Inconsistency detected.
      Invalid view holder adapter positionViewHolder{56798b2 position=2 id=-1, oldPos=2, pLpos:-1 scrap [attachedScrap] tmpDetached no parent}

    在网上看到这个方法可以暂时性解决问题

    其实也不是什么解决方法,只是把这个异常捕获了,不让他奔溃了,这个问题的终极解决方案还是得让google去修复。

    1、创建一个类LinearLayoutManagerWrapper继承LinearLayoutManager,重写onLayoutChildren方法

    1. public class WrapContentLinearLayoutManager extends LinearLayoutManager {  
    2.     public WrapContentLinearLayoutManager(Context context) {  
    3.         super(context);  
    4.     }  
    5.   
    6.     public WrapContentLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {  
    7.         super(context, orientation, reverseLayout);  
    8.     }  
    9.   
    10.     public WrapContentLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {  
    11.         super(context, attrs, defStyleAttr, defStyleRes);  
    12.     }  
    13.   
    14.     @Override  
    15.     public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {  
    16.         try {  
    17.             super.onLayoutChildren(recycler, state);  
    18.         } catch (IndexOutOfBoundsException e) {  
    19.             e.printStackTrace();  
    20.         }  
    21.     }  
    22. }  

    2、设置RecyclerView的布局管理为WrapContentLinearLayoutManager对象

    1. mRecyclerView.setLayoutManager(new WrapContentLinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));  


  • 相关阅读:
    网路连接出现意外错误
    linux install oracle jdk
    Chrome开发者工具详解(一)之使用断点来调试代码上
    jQuery对象与DOM对象的相互转换
    Velocity学习(二)之语法
    vscode学习(一)之vscode开发中绝对让你惊艳的插件!!!(个人在用) 持续更新。。。。
    css3新属性box-orient
    使用css控制文字显示几行并且剩余部分隐藏(移动端和PC端同样适用)
    移动端实现横滑
    移动端实1px细线方法
  • 原文地址:https://www.cnblogs.com/kim-liu/p/7513837.html
Copyright © 2020-2023  润新知