RecyclerView 出现java.lang.IndexOutOfBoundsException: Index: 13, Size: 12 问题解决
2018-03-30 16:22
2783 查看
一般java.lang.IndexOutOfBoundsException: Index: 13, Size: 12这种情况是应为数组越界导致。最近在修改RecyclerView的时候,长按最后一个item时会出现java.lang.IndexOutOfBoundsException: Index: 13, Size: 12 的错误。
比如数组的最大为13,我取下标为13时就会报错。但是点击事件却不受影响。后来通过查资料发现RecyclerView的adapter在没有及时刷新时就会出现这种问题。解决这类问题的方法就是及时刷新RecyclerViewAdapter的数据,在RecyclerViewAdapter的类里重写了getItemCount()方法,更新数据集合时,长度有变化,试图也变化了,但是getItemCount()方法并没有并没有更新,导致getItemCount()返回的数据集合的长度值与当前的数据集合的长度值不一致,出现以上的错误。
以下有几个方法:
notifyItemRangeRemoved()
notifyItemRangeInserted()
notifyItemRangeChanged()
notifyDataSetChanged()
注意:使用notifyDataSetChanged同步外部数据集和内部数据集。该方法简单,但是失去了动画效果,并且更新数据的性能低
比如数组的最大为13,我取下标为13时就会报错。但是点击事件却不受影响。后来通过查资料发现RecyclerView的adapter在没有及时刷新时就会出现这种问题。解决这类问题的方法就是及时刷新RecyclerViewAdapter的数据,在RecyclerViewAdapter的类里重写了getItemCount()方法,更新数据集合时,长度有变化,试图也变化了,但是getItemCount()方法并没有并没有更新,导致getItemCount()返回的数据集合的长度值与当前的数据集合的长度值不一致,出现以上的错误。
解决方案
保证当前的数据集合与adapter的内部数据集合一致以下有几个方法:
notifyItemRangeRemoved()
notifyItemRangeInserted()
notifyItemRangeChanged()
notifyDataSetChanged()
注意:使用notifyDataSetChanged同步外部数据集和内部数据集。该方法简单,但是失去了动画效果,并且更新数据的性能低
相关文章推荐
- 解决java.lang.IndexOutOfBoundsException: Index: 0, Size: 0的问题
- 解决Redisson出现Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'create' threw exception; nested exception is java.lang.ArrayIndexOutOfBoundsException: 0的问题
- Android问题集-RecyclerView--java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
- 滑动RecyclerView时出现异常: java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 6(offset:6).state:30
- Sping 接收前台传过来的数组大小超过256 报 java.lang.IndexOutOfBoundsException: Index: 256, Size: 256 的错误解决
- RecyclerView内部BUG: java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item positio
- Support v-7 recycler view 出现IndexOutOfBoundsException: Inconsistency detected.异常解决办法。
- [经验小结]jxl写excel时产生“java.lang.ArrayIndexOutOfBoundsException: 5”问题的解决办法
- [置顶] android使用getItemViewType时出现java.lang.ArrayIndexOutOfBoundsException的错误
- hive脚本出现Error: java.lang.RuntimeException: Error in configuring object和Caused by: java.lang.IndexOutOfBoundsException: Index: 9, Size: 9
- mvn install:java.lang.StringIndexOutOfBoundsException: String index out of range: -1问题的解决
- 解决java.lang.ArrayIndexOutOfBoundsException问题(android:singleLine="true")
- java.lang.IndexOutOfBoundsException: Index: 5, Size: 5解决
- RecyclerView:java.lang.IndexOutOfBoundsException: Invalid item position
- 点击listview item 报 java.lang.IndexOutOfBoundsException 问题解决方案分析
- Nutch 遇见hits.getHits()出现java.lang.ArrayIndexOutOfBoundsException解决办法
- java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based解决
- HTTP Status 500 - java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
- java.lang.ArrayIndexOutOfBoundsException异常分析及解决
- WAS下使用OJDBC14.JAR的JAVA.LANG.ARRAYINDEXOUTOFBOUNDSEXCEPTION问题