文档章节

RecyclerView IndexOutOfBoundsException

席道坤
 席道坤
发布于 2017/02/09 11:06
字数 218
阅读 442
收藏 0

一、错误信息:

1android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:4505)

2 android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4636)

3 android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4617)

4 android.support.v7.widget.LayoutState.next(LayoutState.java:100)

5 android.support.v7.widget.StaggeredGridLayoutManager.fill(StaggeredGridLayoutManager.java:1538)

6 android.support.v7.widget.StaggeredGridLayoutManager.scrollBy(StaggeredGridLayoutManager.java:2060)

7 android.support.v7.widget.StaggeredGridLayoutManager.scrollVerticallyBy(StaggeredGridLayoutManager.java:1980)

8 android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:4061)

9 android.view.Choreographer$CallbackRecord.run(Choreographer.java:780)

10 android.view.Choreographer.doCallbacks(Choreographer.java:593)

11 android.view.Choreographer.doFrame(Choreographer.java:561)

12 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:766)

13 android.os.Handler.handleCallback(Handler.java:733)

14 android.os.Handler.dispatchMessage(Handler.java:95)

15 android.os.Looper.loop(Looper.java:136)

16 android.app.ActivityThread.main(ActivityThread.java:5314)

17 java.lang.reflect.Method.invokeNative(Native Method)

18 java.lang.reflect.Method.invoke(Method.java:515)

19 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)

20 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:680)

21 dalvik.system.NativeStart.main(Native Method)

二、问题原因:据说是这是Android-support-v7包中的bug。

三、解决方案:捕获这个异常,如让我们的程序崩溃;重写Wrapper,然后用setLayoutManager设置。

  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. }  

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

 

 参考网站:http://stackoverflow.com/questions/31759171/recyclerview-and-java-lang-indexoutofboundsexception-inconsistency-detected-in

© 著作权归作者所有

共有 人打赏支持
席道坤
粉丝 13
博文 228
码字总数 183717
作品 0
徐汇
程序员
私信 提问
recyclerView 遇到IndexOutOfBoundsException 及解决

做项目时用到了recyclerView,至于recyclerView是啥应该不用多解释了,具体用法也不介绍了,不懂的同学自行学习一下,网上很多大神已经介绍的很清楚了,我就不啰嗦了0.0 在使用recyclerView时...

紫葡萄0
2016/12/28
0
0
线性布局LayoutManager的RecyclerView高度随Item自适应

LayoutManager布局的RecyclerView高度随Item自适应 的解决办法就是自己去重写布局管理器LayoutManager。 package com.art.artcircle.widget; import android.content.Context; import andro......

xunfang
2016/03/03
2.4K
0
深入研究Netty框架之ByteBuf功能原理及源码分析

ByteBuf功能原理 ByteBuf是一个byte数组的缓冲区,通过两个位置指针完成缓冲区的读写操作,读操作使用readerIndex,写操作使用writeIndex。 readerIndex和writeIndex初始取值均为0,写入数据...

AbeJeffrey
2016/09/04
409
0
RecyclerView的两种加载更多的写法比较

关于RecyclerView的加载更多(重写RecyclerView.OnScrollListener),网上普遍有两种写法,来分析下两种写法的优劣: 第一种,代码如下,这种方法的原理是当RecyclerView持有的Item数量减去可见的I...

fantasiter
2016/06/30
32
0
赵彦军/RecyclerView

RecyclerView RecyclerView不再负责显示工作,用法比ListView更解耦。和ListView不一样的是,RecyclerView不再负责Item的摆放等显示方面的功能。所有和布局、绘制等方面的工作Google都其拆分成...

赵彦军
2016/12/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

结合Spring和Groovy解决脚本热加载

前言 去年写过一篇文件介绍了采用jpython解决动态配置热加载的问题jpython解决热加载,今年在实现规则引擎过程中准备进行升级,采用groovy脚本解决。 方案 将一些规则相关,如统计,排序,过...

春哥大魔王的博客
2分钟前
0
0
以太坊应用开发接口:JSON RPC API

以太坊应用开发接口指的是以太坊节点软件提供的API接口,去中心化应用可以利用这个接口访问以太坊上的智能合约。以太坊应用开发接口采用JSON-PRC标准,通常是通过HTTP或websocket提供给应用程...

汇智网教程
6分钟前
0
0
排序--二分插入排序

二分插入排序是对直接插入排序的一个优化,在排序--直接插入排序中已经分析过直接插入排序的最坏时间复杂度是平方级别的,二分插入排序则是通过二分查找对寻找插入位置进行了优化,在找到插入...

FAT_mt
17分钟前
1
0
Quora点赞过万!麻省理工5.0GPA十条学习技巧

美国版知乎Quora上有个问题是:顶尖学生如何学习。排名第一的答案已经赢得13.5K次点赞,我们翻译出来分享给大家。 MIT normally does not rank its students. So if you hear that someone g...

乔老哥
30分钟前
1
0
IOC的学习(1)

1.IOC理论概要 java中,一个对象A怎么才能调用对象B? 当一个对象的构建,需要多个其他对象时,对象和对象有复杂的构建关系。spring帮助我们维系对象的依赖关系,降低系统的实现成本,前提是...

杨健-YJ
42分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部