文档章节

RecyclerView IndexOutOfBoundsException

席道坤
 席道坤
发布于 2017/02/09 11:06
字数 218
阅读 421
收藏 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
博文 226
码字总数 183155
作品 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
android之recyclerview的基本使用

Google在推出Android5.0的时候推出了Material Design ,而RecyclerView是Material Design 重要组件之一。当然还有CardView/Palette。 RecyclerView是用来替换传统的ListView和GridView,瀑布流...

墨宇hz
2016/03/21
0
0
RecyclerView的两种加载更多的写法比较

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

fantasiter
2016/06/30
32
0

没有更多内容

加载失败,请刷新页面

加载更多

中秋快乐!!!

HiBlock
昨天
1
0
Node安装教程

1、安装最新版的node 2、设置相关目录(以D盘为例) 分别建立目录:D:\node,D:\node\node-globa,D:\node\node-cache 命令行输入: // 设置npm国内镜像 npm config set registry https://re...

Mohan710
昨天
3
0
中国发布域名系统基础软件 “红枫”

9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软件 “红枫(Maple DNS)”。 9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软...

问题终结者
昨天
3
0
Shell编程(分发系统介绍、expect远程登录、expect远程执行命令、expect传递参数)

分发系统介绍expect 分发系统expect即分发脚本,是一种脚本语言;通过他可以实现传输,输入命令(上线代码) 应用场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者...

蛋黄_Yolks
昨天
4
0
Java Http请求工具类

public static String httpPost(String source, String params) {URL url = null;HttpURLConnection conn = null;OutputStream os = null;String ret = null;try {......

yuewawa
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部