android listview Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3

【android listview Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3】一身转战三千里,一剑曾当百万师。这篇文章主要讲述android listview Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3相关的知识,希望能为你提供帮助。
android listview 适配器在多种类型viewType报错:
 

Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3 2at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6822) 3at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5179) 4at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3558) 5at android.widget.AbsListView.onTouchMove(AbsListView.java:3969) 6at android.widget.AbsListView.onTouchEvent(AbsListView.java:3783) 7at android.widget.ListView.onTouchEvent(ListView.java:4219) 8at android.view.View.dispatchTouchEvent(View.java:8556) 9at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2403) 10at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2096) 11at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2409) 12at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2110) 13at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2409) 14at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2110) 15at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2409) 16at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2110) 17at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2409) 18at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2110) 19at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2409) 20at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2110) 21at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2409) 22at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2110) 23at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2409) 24at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2110) 25at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2455) 26at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1756) 27at android.app.Activity.dispatchTouchEvent(Activity.java:2780) 28at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2412) 29at android.view.View.dispatchPointerEvent(View.java:8751) 30at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4200) 31at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4066) 32at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3606) 33at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3659) 34at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3625) 35at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3742) 36at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3633) 37at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3799) 38at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3606) 39at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3659) 40at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3625) 41at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3633) 42at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3606) 43at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5901) 44at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5875) 45at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5846) 46at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6012) 47at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) 48at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) 49at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176) 50at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5962) 51at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:6035)

  解决方案:http://stackoverflow.com/questions/2596547/arrayindexoutofboundsexception-with-custom-android-adapter-for-multiple-views-in
The item view type you are returning from
getItemViewType()  is  > = getViewTypeCount().
也就是你的viewType的type类型必须从0开始,{0,1,2,3...}这样的.
typecount大于最后一个类型的type即可.
这样就解决了,ListView多种viewType滑动到底,上滑崩溃的现象.

    推荐阅读