Android 【问题汇总】列表数组越界的问题
遇到了一个诡异的问题,ListView发生数组越界(偶尔会),程序崩溃。
错误信息如下:
W/dalvikvm( ): threadid=: thread exiting with uncaught exception (group=0x40015568)
E/zhe800_android( ): Invalid index , size is
E/zhe800_android( ): java.lang.IndexOutOfBoundsException: Invalid index , size is
E/zhe800_android( ): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:)
E/zhe800_android( ): at java.util.ArrayList.get(ArrayList.java:)
E/zhe800_android( ): at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:)
E/zhe800_android( ): at android.widget.AbsListView.obtainView(AbsListView.java:)
E/zhe800_android( ): at android.widget.ListView.makeAndAddView(ListView.java:)
E/zhe800_android( ): at android.widget.ListView.fillUp(ListView.java:)
E/zhe800_android( ): at android.widget.ListView.fillGap(ListView.java:)
E/zhe800_android( ): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:)
E/zhe800_android( ): at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:)
E/zhe800_android( ): at android.os.Handler.handleCallback(Handler.java:)
E/zhe800_android( ): at android.os.Handler.dispatchMessage(Handler.java:)
E/zhe800_android( ): at android.os.Looper.loop(Looper.java:)
E/zhe800_android( ): at android.app.ActivityThread.main(ActivityThread.java:)
E/zhe800_android( ): at java.lang.reflect.Method.invokeNative(Native Method)
E/zhe800_android( ): at java.lang.reflect.Method.invoke(Method.java:)
E/zhe800_android( ): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:)
E/zhe800_android( ): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:)
E/zhe800_android( ): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( ): FATAL EXCEPTION: main
E/AndroidRuntime( ): java.lang.IndexOutOfBoundsException: Invalid index , size is
E/AndroidRuntime( ): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:)
E/AndroidRuntime( ): at java.util.ArrayList.get(ArrayList.java:)
E/AndroidRuntime( ): at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:)
E/AndroidRuntime( ): at android.widget.AbsListView.obtainView(AbsListView.java:)
E/AndroidRuntime( ): at android.widget.ListView.makeAndAddView(ListView.java:)
E/AndroidRuntime( ): at android.widget.ListView.fillUp(ListView.java:)
E/AndroidRuntime( ): at android.widget.ListView.fillGap(ListView.java:)
E/AndroidRuntime( ): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:)
E/AndroidRuntime( ): at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:)
E/AndroidRuntime( ): at android.os.Handler.handleCallback(Handler.java:)
E/AndroidRuntime( ): at android.os.Handler.dispatchMessage(Handler.java:)
E/AndroidRuntime( ): at android.os.Looper.loop(Looper.java:)
E/AndroidRuntime( ): at android.app.ActivityThread.main(ActivityThread.java:)
E/AndroidRuntime( ): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( ): at java.lang.reflect.Method.invoke(Method.java:)
E/AndroidRuntime( ): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:)
E/AndroidRuntime( ): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:)
E/AndroidRuntime( ): at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( ): Force finishing activity com.tuan800.tao800/.activities.CategoryDealActivity
从错误日志看,没有定位到具体的问题所在。
跟踪ListView的源码,可以看出来是与Adapter绑定的数据源存在数组越界。
因为此时,可能会有两个甚至多个线程同时修改数据源。
导致这个问题的发生。
Android 【问题汇总】列表数组越界的问题的更多相关文章
- 解决Android时时更新listview数组越界问题
时时更新数据一般出现在金融.股票行业对数据的准确性要求极高情况下使用. 先来看看下面一段代码, public class MainActivity extends Activity { private ...
- Android 开发框架汇总
Android 开发框架汇总 时间过的真快,转眼间就要进入到16年的8月了,现在应该是三伏期间,一个字“热”.前端时间整理了一篇“JS前端框架汇总”,然后紧接着又抽时间学习了一下Android开发,在 ...
- Android 自学之列表视图ListView和ListActivity
ListView是手机系统中使用非常广泛的一种组件,它以垂直列表的形式显示所有列表项. 创建ListView有两种方式: 直接使用ListView创建. 让Activity继承ListActivity ...
- Android 自学之列表选择框Spinner
列表选择框(Spinner)与Swing编程里面的Spinner不同,这里的Spinner其实就是一个列表选项框. Spinner是ViewGroup的间接子类,因此他也可作为容器使用. Spinne ...
- (转载)Android自定义标签列表控件LabelsView解析
Android自定义标签列表控件LabelsView解析 作者 donkingliang 关注 2017.03.15 20:59* 字数 759 阅读 406评论 0喜欢 3 无论是在移动端的App, ...
- ListView 适配器实现getviewtypecount() 数组越界IndexOutOfBoundException
ListView中Item的多布局显示,需要用到了getviewtypecount和getItemViewType这两个重写方法,但是做完后出现了如下提示错误: java.lang.ArrayInde ...
- iOS如何彻底避免数组越界
我们先来看看有可能会出现的数组越界Crash的地方: ? 1 2 3 4 5 6 7 - (void)tableView:(UITableView *)tableView didSelectRowAt ...
- Objective-c防止数组越界而崩溃(全局效果)
数组越界其实是很基本的问题,但是解决起来除了count的判断,还有每个调用的时候都要去判断一遍 对于不明确的数据总会有崩溃的风险 然而 每次调用都判断 那是太累了 so ..runtime&c ...
- fir.im Weekly - 2016 年 Android 最佳实践列表
2016 年已经过去一半,你在年初制定的成长计划都实现了吗? 学海无涯,技术成长不是一簇而就的事情.本期 fir.im Weekly 推荐 王下邀月熊_Chevalier的 我的编程之路--知识管理与 ...
随机推荐
- VS2010在C#头文件中添加文件注释的方法
步骤: 1.VS2010 中找到安装盘符(本人安装目录在D盘,所以以D盘为例)D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\I ...
- PHP错误The server encountered an internal error or misconfiguration and was unable to complete your re
我的笔记本电脑上的环境安装了很多次,但是运行项目时总是会报The server encountered an internal error or misconfiguration and was un ...
- ASP.Net MVC利用NPOI导入导出Excel
因近期项目遇到所以记录一下: 首先导出Excel: 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// <s ...
- Careercup - Microsoft面试题 - 5120588943196160
2014-05-10 22:58 题目链接 原题: Three points are given A(x1, y1), B(x2, y2), C(x3, y3). Write a method ret ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
- Jquery方法的应用
<body> <div id="one"><span>one</span></div><div class=&qu ...
- web开发--文档下载
GOOGLE在线文档下载地址分享(GOOGLE的文档地址暂不能用了,会放在其它位置..) GOOGLE的在线文档功能好象挂掉了...等找个其它存放的位置把这些文档再上传上去... 存在GOOGLE里面 ...
- ZOJ Monthly, July 2015
B http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5552 输入n,表示有n个数1到n.A先拿,B后拿,依次拿,每次可以拿任意一 ...
- 社区O2O,才是未来10年移动互联网最赚钱的项目
原文:http://blog.sina.com.cn/s/blog_70e76a920102uyoi.html 8月12日 上海 晴 从深圳回来后,一直和郭老师探讨一个问题:新媒体营销未来最大的市 ...
- Linux 搭建SVN 服务器(转)
一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...