遇到了一个诡异的问题,ListView发生数组越界(偶尔会),程序崩溃。

错误信息如下:

W/dalvikvm( 5176): threadid=1: thread exiting with uncaught exception (group=0x40015568)

E/zhe800_android( 5176): Invalid index 2, size is 0

E/zhe800_android( 5176): java.lang.IndexOutOfBoundsException: Invalid index 2, size is 0

E/zhe800_android( 5176): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)

E/zhe800_android( 5176): at java.util.ArrayList.get(ArrayList.java:311)

E/zhe800_android( 5176): at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:225)

E/zhe800_android( 5176): at android.widget.AbsListView.obtainView(AbsListView.java:1424)

E/zhe800_android( 5176): at android.widget.ListView.makeAndAddView(ListView.java:1755)

E/zhe800_android( 5176): at android.widget.ListView.fillUp(ListView.java:704)

E/zhe800_android( 5176): at android.widget.ListView.fillGap(ListView.java:650)

E/zhe800_android( 5176): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:3422)

E/zhe800_android( 5176): at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:2920)

E/zhe800_android( 5176): at android.os.Handler.handleCallback(Handler.java:587)

E/zhe800_android( 5176): at android.os.Handler.dispatchMessage(Handler.java:92)

E/zhe800_android( 5176): at android.os.Looper.loop(Looper.java:130)

E/zhe800_android( 5176): at android.app.ActivityThread.main(ActivityThread.java:3703)

E/zhe800_android( 5176): at java.lang.reflect.Method.invokeNative(Native Method)

E/zhe800_android( 5176): at java.lang.reflect.Method.invoke(Method.java:507)

E/zhe800_android( 5176): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)

E/zhe800_android( 5176): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)

E/zhe800_android( 5176): at dalvik.system.NativeStart.main(Native Method)

E/AndroidRuntime( 5176): FATAL EXCEPTION: main

E/AndroidRuntime( 5176): java.lang.IndexOutOfBoundsException: Invalid index 2, size is 0

E/AndroidRuntime( 5176): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)

E/AndroidRuntime( 5176): at java.util.ArrayList.get(ArrayList.java:311)

E/AndroidRuntime( 5176): at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:225)

E/AndroidRuntime( 5176): at android.widget.AbsListView.obtainView(AbsListView.java:1424)

E/AndroidRuntime( 5176): at android.widget.ListView.makeAndAddView(ListView.java:1755)

E/AndroidRuntime( 5176): at android.widget.ListView.fillUp(ListView.java:704)

E/AndroidRuntime( 5176): at android.widget.ListView.fillGap(ListView.java:650)

E/AndroidRuntime( 5176): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:3422)

E/AndroidRuntime( 5176): at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:2920)

E/AndroidRuntime( 5176): at android.os.Handler.handleCallback(Handler.java:587)

E/AndroidRuntime( 5176): at android.os.Handler.dispatchMessage(Handler.java:92)

E/AndroidRuntime( 5176): at android.os.Looper.loop(Looper.java:130)

E/AndroidRuntime( 5176): at android.app.ActivityThread.main(ActivityThread.java:3703)

E/AndroidRuntime( 5176): at java.lang.reflect.Method.invokeNative(Native Method)

E/AndroidRuntime( 5176): at java.lang.reflect.Method.invoke(Method.java:507)

E/AndroidRuntime( 5176): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)

E/AndroidRuntime( 5176): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)

E/AndroidRuntime( 5176): at dalvik.system.NativeStart.main(Native Method)

W/ActivityManager( 197): Force finishing activity com.tuan800.tao800/.activities.CategoryDealActivity从错误日志看,没有定位到具体的问题所在。

跟踪ListView的源码,可以看出来是与Adapter绑定的数据源存在数组越界。

因为此时,可能会有两个甚至多个线程同时修改数据源。

导致这个问题的发生。

参考资料

python报数组越界_【问题汇总】列表数组越界的问题相关推荐

  1. python报错及解决办法汇总

    python报错及解决办法汇总 matplotlib 'gbk' codec can't decode byte 0x9a in position 37: illegal multibyte sequ ...

  2. python numpy array转置_详解Numpy数组转置的三种方法T、transpose、swapaxes

    Numpy是高性能科学计算和数据分析的基础包,里面包含了许多对数组进行快速运算的标准数学函数,掌握这些方法,能摆脱数据处理时的循环. 1.首先数组转置(T) 创建二维数组data如下: 进行矩阵运算时 ...

  3. 二维数组删除_「leetcode」数组:总结篇!(一文搞懂数组题目)

    数组理论基础 数组是非常基础的数据结构,在面试中,考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力 也就是说,想法很简单,但实现起来 可能就不是那么回事了. 首先要知道数组在内存中的存储方 ...

  4. java 数组 算法_常见算法总结 - 数组篇

    1.给定一个数值在1-100的整数数组,请找到其中缺少的数字. 找到丢失的数字 利用byte数组的1或0标记该数字是否被删除,例如byte数组下标为0的数值为1的话,代表数字1存在 public st ...

  5. java数组 初始化_用Java初始化数组

    java数组 初始化 具有使用C或FORTRAN等语言进行编程的经验的人熟悉数组的概念. 它们基本上是一个连续的内存块,每个位置都是某种类型:整数,浮点数或您所拥有的. Java中的情况与此类似,但有 ...

  6. vue数组刷新_详解VUE 数组更新

    1.数据方法分类: (1)原数组改变 push pop unshift shift reverse sort splice (2)原数组未变,生成新数组 slice concat filter 对于使 ...

  7. java定义对象数组初始化_怎么定义对象数组 JAVA中怎么初始化对象数组?

    java类怎样定义数组对象数组 在c++编程中,怎么定义对象数组的指针? JAVA中怎么初始化对象数组? java中怎么创建对象数组?比如我创建了一个学生类Sclass Student{ } 类中怎么 ...

  8. python list超出范围_错误:列表索引超出范围Python(Error: List Index out of Range Python)...

    错误:列表索引超出范围Python(Error: List Index out of Range Python) 我已经查看了所有错误以找到解决方案,但我找不到可行的解决方案! 我得到列表索引超出范围 ...

  9. python 矩阵元素赋值_对numpy中数组元素的统一赋值实例

    Numpy中的数组整体处理赋值操作一直让我有点迷糊,很多时候理解的不深入.今天单独列写相关的知识点,进行总结一下. 先看两个代码片小例子: 例子1: In [2]: arr =np.empty((8, ...

  10. python两个二维数组加法_对二维数组的多个列进行Numpy平均

    首先,在我看来,你根本没有平均列的平均值,你只是一次平均两个数据点.在我看来,你最好不要使用reshaping数组,这样你就有了一个可以直接提供给mean的Nx2数据结构.如果列数不太兼容,可能必须先 ...

最新文章

  1. linux动态库替换,不要使用 cp 替换正在使用中的Linux 动态库
  2. 获得客户端的时区(get client-side time zone by JS)
  3. Docker:Redis启动命令
  4. 如何通过 Tampermonkey 快速查找 JavaScript 加密入口
  5. Entity Framework 4.1 (强转)
  6. SPI-TOUCHP调试(2440a-wince5)
  7. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(八):MyBatis分页功能实现
  8. windows开发——配置pthread.h头文件
  9. 配置nessus服务在kali中开机自启动
  10. java成员方法tostring_Java 工具类-toString
  11. 低智商社会,娱乐至死,2书推荐,世界12大理论,
  12. 基于Springboot+MyBatisPlus+Vue前后端分离大学生毕业论文答辩系统
  13. 卑微的我,喜欢遥远的你
  14. 在IE浏览器访问网址时显示证书错误,导航已阻止
  15. 开心网辅助程序--开心网争车位助手正式发布(含源码)
  16. wi7计算机桌面删除,win7系统删除桌面右键多余选项
  17. 1324. Print Words Vertically**
  18. 壹佰大米时代公司研究报告
  19. python编写电子菜单_python 写三级菜单
  20. 基于时间序列AR模型的PHM预测

热门文章

  1. 接口测试Fiddler实战
  2. mysql 数据表中查找重复记录
  3. 【算法学习笔记】03.白书练习题stat(排序入门:冒泡,桶)
  4. 判断年月日是否正确及获取当前天的前一天或前一个月
  5. 三网融合催生第三方数据服务产业
  6. 华为机试HJ24:合唱队
  7. PHP网站首页空白刷新就好了,部署好后网站一片空白,不显示内容
  8. ant里面table嵌套子表格_ElementUI el-table行内编辑验证,动态增减行
  9. python收集参数_Python 中函数的 收集参数 机制
  10. 深信服防火墙console波特率_乾颐盾之深信服防火墙------初始化教程