文档章节

RecyclerView IndexOutOfBoundsException

席道坤
 席道坤
发布于 2017/02/09 11:06
字数 218
阅读 516
收藏 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

© 著作权归作者所有

席道坤
粉丝 14
博文 231
码字总数 186433
作品 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
3.3K
0
RecyclerView 使用总结以及常见问题解决方案

1 RecycleView设置了数据不显示 本文主要讲一下我个人对于RecycleView的使用的一些思考以及一些常见的问题怎么解决。先来看一下使用RecycleView时常见的问题以及一些需求。 这个往往是因为你...

Android小安
01/16
0
0
深入研究Netty框架之ByteBuf功能原理及源码分析

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

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

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

fantasiter
2016/06/30
45
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
43
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部