ArrayAdapter et ListView - ArrayIndexOutOfBoundsException
-
26-09-2019 - |
Question
Je suis vraiment en espérant que quelqu'un peut me aider avec celui-ci. Je suis coincé là-dessus pour toujours. De temps en temps, quand quelqu'un utilise mon application, il va forcer près à cette exception:
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)
Cependant, je ne peux pas comprendre pourquoi. Il est relativement rare, non reproductible, et le stacktrace est complètement inutile parce qu'il ne comprend pas de mon code.
Est-ce un bogue dans Android lui-même?
La solution
Quelle version d'Android sont en cours d'exécution vous? D'après ce que je peux dire à votre adaptateur retourne le mauvais nombre de getViewTypeCount () (ou que vous changez le nombre de type d'affichage dynamique qui est une grosse erreur.)
Autres conseils
En plus de ce que Romain dit, il semble important que le plus grand type d'affichage est plus petit que le nombre de type d'affichage.
J'ai eu deux types de vue définis (pour une raison quelconque) avec 1
et 2
et 2
retourné dans getViewTypeCount()
ce qui m'a donné la même exception que ci-dessus. Re-indexation des types de 0
et 1
fixe la question.