Exception in thread in"AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 7

Java常见异常和错误_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Java常见异常和错误
上传于|0|0|文档简介
&&java,cuowu,错误,常用
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢查看:26371|回复:27
中级工程师
listvie刷新,有时候 报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
大概思路是
& &从后台获取数据
& && && && &&&JSONObject jsonObj = (JSONObject) msg.getData(HttpNetwork.RESULT);
&&从json提取数据给一个暂存list,这个list是方法中局部变量
& && &for (int i = 0; i & array.length(); i++) {
& && && && && & JSONObject userObj = ((JSONObject) array.opt(i));
& && && && && & ......
& && && && && & list.add(user);
& && && &}
& & //数据源清空以前的数据
& && &this.list.clear();
& &&&this.list.addAll(list);&&
& & 发送异步消息
& & msgHandle.obtainMessage(ListBase.MSG_SUCCESS).sendToTarget();
& && && && && & Log.e(&sns&, &发送通知到activity&);
//处理消息
& &&&switch (msg.what) {
& && &&&case UserList.MSG_SUCCESS:
& && && && &Log.i(&sns&, &activity 收到成功消息&);
& && && && &listItems = listBase.getList();
& && && && &Log.i(&sns&, &listItems消息条数:& + listItems.size() + & & + listViewAdapter.listItems.size());
& && && && &listViewAdapter.notifyDataSetChanged();
& && && && &
这个异常有时候会有,有时候正常,求大神解决,搞了一天还解决问题,log中没有说代码中哪个地方报出该异常,只是
说arraylist越界,java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
本帖最后由 四海轩 于
20:14 编辑
助理工程师
引用:原帖由 四海轩 于
22:40 发表
listvie刷新,有时候 报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
大概思路是
& &从后台获取数据
& && && && &&&JSONObject jsonObj = (JSONObject) msg.getData(HttpNetwork.RESULT);
&&从js ... 看不出来,不过应该是这样的问题。
某个list是空的,却调用了list[0], 取它的元素。
有时发生异常,有时不发生。说明有时这个list取得了数据,不为空,就正常了;有时这个list没有取得数据,为空,就异常了。
解决办法,操作时,加个判断吧。不为空时才处理。
本帖最后由 stefan58 于
23:18 编辑
中级工程师
引用:原帖由 stefan58 于
23:13 发表
看不出来,不过应该是这样的问题。
某个list是空的,却调用了list[0], 取它的元素。
有时发生异常,有时不发生。说明有时这个list取得了数据,不为空,就正常了;有时这个list没有取得数据,为空,就异常了。
解决办法,操作时,加个判 ... 我没还没发现在哪个地方调用list.get(0)?呵呵。我在适配器也在家判断的。看listview机制在那个地方调用没有!
本帖最后由 四海轩 于
23:30 编辑
资深技术经理
引用:原帖由 四海轩 于
22:40 发表
listvie刷新,有时候 报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
大概思路是
& &从后台获取数据
& && && && &&&JSONObject jsonObj = (JSONObject) msg.getData(HttpNetwork.RESULT);
&&从js ... 报异常的时候应该会抛出当前异常的堆栈信息,就是哪个类的哪一行出现异常,你可以看到么?
中级工程师
引用:原帖由 rongwei84n 于
09:21 发表
报异常的时候应该会抛出当前异常的堆栈信息,就是哪个类的哪一行出现异常,你可以看到么? 04-25 08:25:34.766: W/dalvikvm-sfm(11511): threadid=1: thread exiting with uncaught exception (group=0x)
04-25 08:25:34.956: E/AndroidRuntime(11511): FATAL EXCEPTION: main
04-25 08:25:34.956: E/AndroidRuntime(11511): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
04-25 08:25:34.956: E/AndroidRuntime(11511):& && && &at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
04-25 08:25:34.956: E/AndroidRuntime(11511):& && && &at java.util.ArrayList.get(ArrayList.java:311)
04-25 08:25:34.956: E/AndroidRuntime(11511):& && && &at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:225)
04-25 08:25:34.956: E/AndroidRuntime(11511):& && && &at android.widget.AbsListView.obtainView(AbsListView.java:1409)
04-25 08:25:34.956: E/AndroidRuntime(11511):& && && &at android.widget.ListView.measureHeightOfChildren(ListView.java:1264)
本帖最后由 四海轩 于
10:18 编辑
资深技术经理
引用:原帖由 四海轩 于
22:40 发表
listvie刷新,有时候 报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
大概思路是
& &从后台获取数据
& && && && &&&JSONObject jsonObj = (JSONObject) msg.getData(HttpNetwork.RESULT);
&&从js ... 感觉这样写是不是 有点问题呢,你是不是在后台获取到数据,然后把数据放到list里面,再通知主线程来处理这个list?然后后台在某种机制下,再去获取数据?
那你怎么保证主线程能够在 后台再次修改这个list之前把数据消费掉呢?
打个比方说,你后台第一个把数据给了list,然后让主线程去显示;接着后台继续获取数据。那也许有可能主线程还是没刷新完,后台又把新数据给过来了。
这也许就会出现问题了。
中级工程师
引用:原帖由 rongwei84n 于
12:04 发表
感觉这样写是不是 有点问题呢,你是不是在后台获取到数据,然后把数据放到list里面,再通知主线程来处理这个list?然后后台在某种机制下,再去获取数据?
那你怎么保证主线程能够在 后台再次修改这个list之前把数据消费掉呢?
打 ... 没有接着去后台获取数据。。。你觉得上面那个语句再次从后台获取数据了?
本帖最后由 四海轩 于
12:21 编辑
资深技术经理
引用:原帖由 四海轩 于
12:19 发表
没有接着去后台获取数据。。。你觉得上面那个语句再次从后台获取数据了? 看出现异常的这个地方,红色部分 HeaderViewListAdapter.java 第225行
public View getView(int position, View convertView, ViewGroup parent) {
& && &&&// Header (negative positions will throw an ArrayIndexOutOfBoundsException)
& && &&&int numHeaders = getHeadersCount();
& && &&&if (position & numHeaders) {
& && && && &return mHeaderViewInfos.get(position).
& && &&&// Adapter
& && &&&final int adjPosition = position - numH
& && &&&int adapterCount = 0;
& && &&&if (mAdapter != null) {
& && && && &adapterCount = mAdapter.getCount();
& && && && &if (adjPosition & adapterCount) {
& && && && && & return mAdapter.getView(adjPosition, convertView, parent);
& && && && &}
& && &&&// Footer (off-limits positions will throw an ArrayIndexOutOfBoundsException)
& && &&&return mFooterViewInfos.get(adjPosition - adapterCount).
这里会调用mAdapter.getCount();和当前的位置相比较。
我们应该要调用return mAdapter.getView(adjPosition, convertView, parent);的,但是现在调用下面的 逻辑
中级工程师
引用:原帖由 rongwei84n 于
14:23 发表
看出现异常的这个地方,红色部分 HeaderViewListAdapter.java 第225行
public View getView(int position, View convertView, ViewGroup parent) {
& && &&&// Header (negative positions will throw an ArrayIndex ... 但是,我们没有设置header
资深技术经理
引用:原帖由 四海轩 于
15:22 发表
但是,我们没有设置header 你的是一个apk吗?要不把应用程序代码发上来看看把?
中级工程师
引用:原帖由 rongwei84n 于
15:37 发表
你的是一个apk吗?要不把应用程序代码发上来看看把? 是公司的东东,有很多模块,贴上来有很多!
资深技术经理
引用:原帖由 四海轩 于
22:40 发表
listvie刷新,有时候 报java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
大概思路是
& &从后台获取数据
& && && && &&&JSONObject jsonObj = (JSONObject) msg.getData(HttpNetwork.RESULT);
&&从js ... 你在这里面重新new&&adapter 然后 setAdapter()吧,试试
case UserList.MSG_SUCCESS:
& && && && &Log.i(&sns&, &activity 收到成功消息&);
& && && && &listItems = listBase.getList();
& && && && &Log.i(&sns&, &listItems消息条数:& + listItems.size() + & & + listViewAdapter.listItems.size());
& && && && &listViewAdapter.notifyDataSetChanged();
& && && && &
中级工程师
引用:原帖由 rongwei84n 于
16:03 发表
你在这里面重新new&&adapter 然后 setAdapter()吧,试试
case UserList.MSG_SUCCESS:
& && && && &Log.i(&sns&, &activity 收到成功消息&);
& && && && &listItems = listBase.getList();
& && && && &Log.i(&sns&,&&... 不行,我也尝试过!
资深技术经理
引用:原帖由 四海轩 于
16:08 发表
不行,我也尝试过! 如果不是共用一个list呢,就是每次都后台返回你封装的newList,不要赋值给原来的list,用message传到主线程来,然后new adapter, setAdapter()不知道可不可以。
中级工程师
引用:原帖由 rongwei84n 于
16:14 发表
如果不是共用一个list呢,就是每次都后台返回你封装的newList,不要赋值给原来的list,用message传到主线程来,然后new adapter, setAdapter()不知道可不可以。 这个好像有点困难,这样代码结构要调整,我去要改接口,因为都是做的接口太通用了。。。
listView 是动态加载数据,即便你已经为listView配置了Adapter 但是那些不能显示的条目仍然是空的,也就是说,当你调用那些没有显示的条目的时候就会出现空指针异常。
资深技术经理
引用:原帖由 dengzhihua_happ 于
17:21 发表
listView 是动态加载数据,即便你已经为listView配置了Adapter 但是那些不能显示的条目仍然是空的,也就是说,当你调用那些没有显示的条目的时候就会出现空指针异常。 ... 这个,楼上可以说的再详细点么? 不能显示的条目是什么意思呢?
中级工程师
引用:原帖由 rongwei84n 于
09:00 发表
这个,楼上可以说的再详细点么? 不能显示的条目是什么意思呢? 这问题我解决了,只不过程序经过框架处理后,我做了框架的反动作,然后重新给数据源一个新的引用,重新给适配器可以了,这样不用改别人的写的框架了。。。笨办法。。
有志者事竟成!
本帖最后由 四海轩 于
17:35 编辑
资深技术经理
引用:原帖由 四海轩 于
17:34 发表
这问题我解决了,只不过程序经过框架处理后,我做了框架的反动作,然后重新给数据源一个新的引用,重新给适配器可以了,这样不用改别人的写的框架了。。。笨办法。。 ... :lol1 呵呵,也就是说,是要重新new adapter,然后setAdapter()?
中级工程师
引用:原帖由 rongwei84n 于
18:10 发表
:lol1 呵呵,也就是说,是要重新new adapter,然后setAdapter()? 嗯,没有办法的办法。扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException:2at org.jcjava.dwindow.Dwindow.actionPerformed(Dwindow.java:46)at java.awt.TextField.processActionEvent(Unknown Source)at java.awt.TextField.processEvent(Unknown Source)at ponent.dispatchEventImpl(Unknown Source)at ponent.dispatchEvent(Unknown Source)at java.awt.EventQueue.dispatchEvent(Unknown Source)at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)at java.awt.EventDispatchThread.pumpEvents(Unknown Source)at java.awt.EventDispatchThread.pumpEvents(Unknown Source)at java.awt.EventDispatchThread.run(Unknown Source)
夜儿306168
扫二维码下载作业帮
1.75亿学生的选择
数组越界了,你的使用了不可用的索引:比如:int[] a = new int[3];a[3] = 1;这个就是错了,因为a[3]不存在你看看你声明的组件的数组是不是也出现了这个情况,比如把JTextField放在一个数组里,然后越界
为您推荐:
其他类似问题
这是英文吗?到计算机技术板去问问,我虽对java不熟,但光看这些代码,每人知道是什么东西,要详细点
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)java.lang.Illega...
扫描下载二维码&&& 由于在做socket在线聊天室,初次使用JList作为在线用户列表。虽然有很多不懂的,都是靠API完成的。昨天因为JList遇到了一些问题,影响了项目的进度。自己也参考了很多其他人的解决方案,但是和我的问题终究不同,以下是我的代码。package com.socket.import java.awt.event.ActionEimport java.awt.event.ActionLimport java.io.IOEimport javax.swing.*;public class test {
DefaultListM
public static void main(String args[]){
new test().createUI();
public void createUI(){
frame = new JFrame("Test JList");
delete = new JButton("删除");
model = new DefaultListModel();
list = new JList(model);
String datas[] = {"aaa","bbb","ccc","ddd","eee","fff","ggg"};
list.setListData(datas);
//错误做法
//正确做法
for(String data:datas){
model.addElement(data);
delete.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Object values[] = list.getSelectedValues();
for(Object value:values){
model.removeElement(value);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(delete,"North");
frame.add(list,"Center");
frame.pack();
frame.setVisible(true);
最新教程周点击榜
微信扫一扫}

我要回帖

更多关于 runinmainthread 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信