zoukankan      html  css  js  c++  java
  • 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));  


  • 相关阅读:
    JavaScript的兼容小坑和调试小技巧
    前端jQuery实现瀑布流
    angular常用属性大全
    Eclipse易卡死
    工作反思
    半年回忆
    努力做到
    产品经理如何应对技术的「做不了」这样的问题(转)
    优秀的产品经理我还有多远
    简历技巧
  • 原文地址:https://www.cnblogs.com/kim-liu/p/7513837.html
Copyright © 2011-2022 走看看