android – ArrayAdapter中的IndexOutOfBoundsException

android – ArrayAdapter中的IndexOutOfBoundsException,第1张

概述我得到了一个涉及ListView和ArrayAdapter的简单代码,它会在某些设备上抛出IndexOutOfBoundsException.问题是:我不知道这个异常是如何发生的,我只从 Android的开发者控制台获取堆栈跟踪. 简化代码示例如下所示.对于position元素,ArrayAdapter的getItem *** 作如何失败? ArrayAdapter永远不会更改,Activity中没有其他 我得到了一个涉及ListVIEw和ArrayAdapter的简单代码,它会在某些设备上抛出indexoutofboundsexception.问题是:我不知道这个异常是如何发生的,我只从 Android的开发者控制台获取堆栈跟踪.

简化代码示例如下所示.对于position元素,ArrayAdapter的getItem *** 作如何失败? ArrayAdapter永远不会更改,Activity中没有其他方法.

我知道indexoutofboundsexception是什么,我知道我可以通过先检查长度来阻止它.但我很好奇:这个例外怎么会发生在这里?如何点击数据结构中不存在的事件?

减少代码:

public class EventListActivity extends Activity {    public voID onStart() {        final ListVIEw ListvIEw = new ListVIEw(this);        final Event[] events = [RetrIEve a Array from somewhere]        final ArrayAdapter<Event> a = new ArrayAdapter<Event>(this,R.layout.eventListitem,events);        ListvIEw.setAdapter(a);        ListvIEw.setonItemClickListener(new OnItemClickListener() {            public voID onItemClick(AdapterVIEw<?> parent,VIEw vIEw,int position,long ID) {                Event event = a.getItem(position);                                ^^^^^^^ throws Exception            }        });

例外:

java.lang.indexoutofboundsexceptionat java.util.Arrays$ArrayList.get(Arrays.java:75)at androID.Widget.ArrayAdapter.getItem(ArrayAdapter.java:298)at xxx.EventListActivity.onItemClick(EventListActivity.java:130)
解决方法 好的,我调试了它,万一有人有同样的错误,这里是解决方案:

如果使用ListVIEw.addheader,则onItemClick的position参数将移位1.看起来很奇怪,因为该位置与数组适配器中的位置无关. This SO Question包含相同的结论,您必须注意添加为标题的内容.

我上面的问题实际上并不是很有帮助,因为整个addheader部分都丢失了,不可能回答其他人的问题,抱歉.然而,这个答案可能对其他人有所帮助.

总结

以上是内存溢出为你收集整理的android – ArrayAdapter中的IndexOutOfBoundsException全部内容,希望文章能够帮你解决android – ArrayAdapter中的IndexOutOfBoundsException所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1128976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存