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的 我的编程之路--知识管理与 ...
随机推荐
- C++(MFC)编程中遇到的的一些函数
memset void memset( void dest, int c, size_t count ); dest: Pointer to destination c: Character to s ...
- Mysql高级之存储过程
参考地址1:http://www.2cto.com/database/201411/350819.html 参考地址2:http://www.jb51.net/article/39471.htm my ...
- Node.js 项目搭建
关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识.本书绝不是一本“Hello World”的教程. 状态 你正在阅读的已经是本书的最终版. ...
- css3 的content 属性
content属性想必大家都熟悉了,一般结合伪类一起使用,表示显示的内容 例如:.box:before{content:"hello";width:100px;line-heigh ...
- 【BZOJ】【3282】Tree
LCT 喜闻乐见的Link-Cut-Tree…… srO zyf http://www.cnblogs.com/zyfzyf/p/4149109.html 目测我是第222个?………………不要在意这些 ...
- Detecting diabetic retinopathy in eye images
Detecting diabetic retinopathy in eye images The past almost four months I have been competing in a ...
- UML概述(转载)
UML是一种标准语言,用于指定,可视化,构造和文档的软件系统. UML是OMG在1997年1月提出了创建由对象管理组织(OMG)和UML1.0规范草案. OMG不断努力,使一个真正的行业标准. UML ...
- uiview 单边圆角或者单边框
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(120, 10, 80, 80)]; view2.backgroundColor = ...
- ASP.NET页面刷新的实现方法总结
先看看ASP.NET页面刷新的实现方法: 第一: private void Button1_Click( object sender, System.EventArgs e ) { Response. ...
- JQuery表单验证插件EasyValidator,超级简单易用!
本插件的宗旨是:用户无需写一行JS验证代码,只需在要验证的表单中加入相应的验证属性即可,让验证功能易维护,可扩展,更容易上手. DEMO中已经包含了常用的正则表达式,可以直接复用,为了考虑扩展性,所以 ...