2010-06-10 63 views
5

我真的希望有人可以幫助我與這一個。我一直堅持下去。有時候,當有人使用我的應用程序,它會強制關閉這個例外:ArrayAdapter和ListView - ArrayIndexOutOfBoundsException

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本身的錯誤嗎?

+0

可能不是。發佈您的ListView適配器的代碼。你的適配器是否包含一個你可能在應用程序的其他地方修改的集合? – 2010-06-10 19:20:19

回答

11

您運行的是哪個版本的Android?從我可以告訴你的適配器是從getViewTypeCount()返回錯誤的計數(或動態改變視圖類型計數,這是一個很大的錯誤)。

+0

不知道這個特定異常來自哪個版本,但我在2.1版本中遇到過這種情況。我不重寫getViewTypeCount()或getItemViewType(),所以我不知道這怎麼可能發生。 – synic 2010-06-10 19:07:12

+0

其實,我錯了。我是個白癡。我重寫了它們,並返回了錯誤的視圖類型計數。謝謝 – synic 2010-06-10 21:03:47

+1

@synic:你不是唯一一個這樣做過的人...... *啊! – Bondax 2012-10-30 15:31:04

5

除了什麼Romain說,似乎是重要的最大視圖類型小於視圖類型計數。

我不得不定義(對什麼都原因)兩種數據視圖與12getViewTypeCount()這給了我同樣的異常如上返回2。將類型重新編入01修復了此問題。

+0

你是一個拯救生命的人!我不知道用於常量的索引作爲視圖類型可以導致這種情況。 – ebernie 2013-12-27 12:24:54