Android异常--6. java.lang.IndexOutOfBoundsException: Invalid index 1 ,size is 1
来源:互联网 发布:简单视频特效软件 编辑:程序博客网 时间:2024/06/13 00:39
Android异常汇集----6. java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
1.异常描述
实现listview上拉刷新操作,在 数据清空 list.clear(); 和 list.addAll(list); 偶尔出现此问题,出现异常完整信息如下:
java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)at java.util.ArrayList.get(ArrayList.java:308)at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)at android.widget.ListView.dispatchDraw(ListView.java:3408)at android.view.View.draw(View.java:15593)at android.widget.AbsListView.draw(AbsListView.java:4642)at android.view.View.updateDisplayListIfDirty(View.java:14471)at android.view.View.getDisplayList(View.java:14501)at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3517)at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3496)at android.view.View.updateDisplayListIfDirty(View.java:14421)at android.view.View.getDisplayList(View.java:14501)at android.view.View.draw(View.java:15286)at android.view.ViewGroup.drawChild(ViewGroup.java:3533)at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3327)at android.view.View.draw(View.java:15593)at android.view.View.updateDisplayListIfDirty(View.java:14471)at android.view.View.getDisplayList(View.java:14501)at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3517)at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3496)可以看到是数组越界,但是很多人都无法做出定位错误地点,
2.分析过程
自己用了别的上拉刷新框架,RefreshableListView也会出现, 只要做做出list.clear() 或者list.add() 就会出现此现象。
if (Action == REFRESH_GET) {list.clear(); list = list_new;mhHandler.sendEmptyMessage(4); }当我们不做此操作,就不会发生,问题就出现这里。网上资料也很多提到。
//数据源清空以前的数据
this.list.clear();
this.list.addAll(list);
// 发送异步消息
msgHandle.obtainMessage()
原因在list.clear()和list.addAll两个对于集合的操作是在异步线程当中,修改完list之后才通过handler发消息去更新UI,
在这间隔中如果ListView调用draw方法就会报异常,重新给数据源一个新的引用,重新给适配器可以
3. 解决方法
建议将
if (Action == REFRESH_GET) {list.clear(); list = list_new;mhHandler.sendEmptyMessage(4); }改为
if(Action==Refresh_GET){
Message msg=new Message();
msg.obj=list_new;
mhHandler.sendMessage(msg);
}
在handler中处理消息,将list跟adapter在同一线程中处理
list=list_new
weixinAdapter adapter=new weixinAdapter(getActivity());
adapter.setData(list);
mlistview.setAdapter(adapter);
adapter.notifyDataSetChanged();
以上个人理解之处,有问题可以指正,共同更改.....
- Android异常--6. java.lang.IndexOutOfBoundsException: Invalid index 1 ,size is 1
- 异常 E/MessageQueue-JNI(796): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
- Android中的ViewPager在更新内容的时候报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0异常
- java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
- java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
- java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
- java.lang.IndexOutOfBoundsException: Invalid index 17, size is 10
- ViewPager java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
- ListView 点击加载更多出现异常(java.lang.IndexOutOfBoundsException: Invalid index 10, size is 10)
- java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
- java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
- Listview indexOutOfBoundsException: Invalid index 1, size is 1
- java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 at java.util.ArrayList.throwIndexO
- java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0错误解析
- java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
- java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
- java.lang.IndexOutOfBoundsException: Index: 0,Size
- java.lang.IndexOutOfBoundsException: Index: 0;size:0
- JMS消息类型
- MySQL InnoDB的存储结构总结
- Hdu-5863 cjj's string game(矩阵快速幂)
- Android studio 创建签名文件
- 【腾讯Bugly干货分享】微信iOS SQLite源码优化实践
- Android异常--6. java.lang.IndexOutOfBoundsException: Invalid index 1 ,size is 1
- java 内部类学习
- java设计模式之七
- Protocol协议及委托代理
- C++ 字符串倒置
- Linux2.6 内核的 Initrd 机制解析
- Scikit-learn:scikit-learn快速教程及实例
- HashMap,HashSet
- MySQL体系结构以及各种文件类型学习汇总