【问题标题】:ArrayAdapter and ListView - ArrayIndexOutOfBoundsExceptionArrayAdapter 和 ListView - ArrayIndexOutOfBoundsException
【发布时间】:2010-06-10 18:52:44
【问题描述】:

我真的希望有人可以帮助我解决这个问题。我一直坚持下去。有时,当有人使用我的应用程序时,它会强制关闭并出现以下异常:

java.lang.ArrayIndexOutOfBoundsException
    at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:3572)
    at android.widget.AbsListView.trackMotionScroll(AbsListView.java:2487)
    at android.widget.AbsListView.onTouchEvent(AbsListView.java:2001)
    at android.widget.ListView.onTouchEvent(ListView.java:3234)
    at android.view.View.dispatchTouchEvent(View.java:3709)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:874)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1695)
    at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1116)
    at android.app.Activity.dispatchTouchEvent(Activity.java:2068)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1679)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1695)
    at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1116)
    at android.app.Activity.dispatchTouchEvent(Activity.java:2068)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1679)
    at android.view.ViewRoot.handleMessage(ViewRoot.java:1697)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:4568)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    at dalvik.system.NativeStart.main(Native Method)

但是,我不知道为什么。它比较少见,不可重现,而且堆栈跟踪完全没有帮助,因为它不包含我的任何代码。

这是 Android 本身的错误吗?

【问题讨论】:

  • 可能不会。发布您的 ListView 适配器的代码。您的适配器是否包含您可能在应用程序的其他地方修改的集合?

标签: android android-listview


【解决方案1】:

您运行的是哪个版本的 Android?据我所知,您的适配器从 getViewTypeCount() 返回了错误的计数(或者您正在动态更改视图类型计数,这是一个大错误。)

【讨论】:

  • 不确定这个特殊异常来自哪个版本,但我在 2.1 上遇到过这种情况。我根本没有覆盖 getViewTypeCount() 或 getItemViewType(),所以我不确定这是怎么发生的
  • 其实我错了。我是个白痴。我正在覆盖它们,并返回不正确的视图类型计数。谢谢
  • 如何判断适配器从 getViewTypeCount() 返回的计数错误?
【解决方案2】:

除了Romain 所说的之外,最大的视图类型小于视图类型计数似乎很重要。

我用12 定义了两种视图类型(无论出于何种原因),并在getViewTypeCount() 中返回2,这给了我与上述相同的异常。将类型重新索引为 01 修复了该问题。

【讨论】:

  • 你是救生员!我不知道用于常量的索引作为视图类型会导致这种情况。
猜你喜欢
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多