文档章节

RecyclerView IndexOutOfBoundsException

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

© 著作权归作者所有

共有 人打赏支持
席道坤
粉丝 12
博文 215
码字总数 166591
作品 0
徐汇
程序员
recyclerView 遇到IndexOutOfBoundsException 及解决

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

紫葡萄0 ⋅ 2016/12/28 ⋅ 0

线性布局LayoutManager的RecyclerView高度随Item自适应

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

xunfang ⋅ 2016/03/03 ⋅ 0

深入研究Netty框架之ByteBuf功能原理及源码分析

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

AbeJeffrey ⋅ 2016/09/04 ⋅ 0

RecyclerView的两种加载更多的写法比较

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

fantasiter ⋅ 2016/06/30 ⋅ 0

android之recyclerview的基本使用

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

墨宇hz ⋅ 2016/03/21 ⋅ 0

赵彦军/RecyclerView

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

赵彦军 ⋅ 2016/12/02 ⋅ 0

Android Material风格的应用(二)--RecyclerView

添加RecyclerView Android Material风格的应用(一)--AppBar TabLayout Android Material风格的应用(二)--RecyclerView Android Material风格的应用(三)--DrawerLayout Android Material风格的......

coderminer ⋅ 2016/11/14 ⋅ 0

RecyclerView混合布局

RecyclerView对于每一个学习安卓的人来说已不再陌生,RecyclerView的使用场景非常多例如多种样式的列表,宫格和列表同时存在,分类列表即新闻浏览、淘宝页面和通讯录。这些我们经常看到的布局...

什么都不懂的小石 ⋅ 2017/10/29 ⋅ 0

Android控件RecyclerView和ListView的异同

在我的一篇介绍Android新控件RecyclerView的博客( Android L新控件RecyclerView简介 )中,一个读者留言说RecyclerView跟ListView之间好像没有什么不同,我觉得这是一个好问题,应该明确地区...

小克898 ⋅ 2016/08/16 ⋅ 0

RecyclerView加载更多的一个坑

当RecyclerView只有一个元素的时候,这个时候向下滑动,是不会调用onScroll方法的,但是会调用onScrollStateChanged方法,因此,不能把获取Item数量的方法写在onScroll方法里,需要写在onScrollSta...

fantasiter ⋅ 2016/08/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring表达式语言(SpEL)

1、SpEL引用 Spring EL在bean创建时执行其中的表达式。此外,所有的Spring表达式都可以通过XML或注解的方式实现。下面将使用Spring表达式语言(SpEL),注入字符串,整数,Bean到属性。 SpEL的...

霍淇滨 ⋅ 31分钟前 ⋅ 0

Gradle使用阿里云镜像

gradle 生命周期中有一个初始化( Initialization )的过程,这个过程运行在 build script 之前,我们可以在这个地方做一点系统全局的设置,如配置仓库地址。 你可以在以下几个位置实现仓库地址...

明MikeWoo ⋅ 39分钟前 ⋅ 0

appium+python3.6

1.安装jdk1.8(不知道为啥只识别1.8,1.10不识别,所以为了少折腾,迁就安装1.8) http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 配置 JAVA_HOME:...

Kampfer ⋅ 57分钟前 ⋅ 0

详解Apache 日志分割教程

一、日志切割 安装cronolog CentOS 5.3中编译安装Apache日志默认是不切割的,需要用用工具Cronnolog进行日志切割。 1.下载及安装 wget http://cronolog.org/download/cronolog-1.6.2.tar.gz ...

dragon_tech ⋅ 今天 ⋅ 0

Keepalived介绍

负载均衡器(Load Balancer, LB )是一组能够将IP数据流以负载均衡形式转发到多台物理服务器的集成软件。有硬件负载均衡器和软件负载均衡器之分,硬件负载均衡器主要是在访问网络和服务器之间...

寰宇01 ⋅ 今天 ⋅ 0

java8-Collections and Streams

stream和集合的区别是什么? 1.在计算的时候处理不同, 2.every element should be computed in the memory and then to be part of collections stream Stream apis filter with a predica......

writeademo ⋅ 今天 ⋅ 0

Confluence 6 重新获得附件指南

每一个文件在恢复上传到 Confluence 的时候必须单独重命名,你可以通过下面说明的 3 个方法中选择一个进行操作: 选择 A - 通过文件名恢复附件 如果你知道你需要恢复的每一个文件名,尤其是你...

honeymose ⋅ 今天 ⋅ 0

【每天一个JQuery特效】根据状态确定是否滑入或滑出被选元素

主要效果: 本文主要采用slideToggle()方法实现以一行代码同时实现以展开或收缩的方式显示或隐藏被选元素。 主要代码如下: <!DOCTYPE html><html><head><meta charset="UTF-8">...

Rhymo-Wu ⋅ 今天 ⋅ 0

度量.net framework 迁移到.net core的工作量

把现有的.net framework程序迁移到.net core上,是一个非常复杂的工作,特别是一些API在两个平台上还不能同时支持。两个类库的差异性,通过人工很难识别全。好在微软的工程师们考虑到了我们顾...

李朝强 ⋅ 今天 ⋅ 0

请不要在“微服务”的狂热中迷失自我!

微服务在过去几年一直是一个非常热门的话题(附录1)。何为“微服务的疯狂”,举个例子: 众所周知,Netflix在DevOps上的表现非常棒。Netfix可以做微服务。因此:如果我做微服务,我也将非常...

harries ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部