Android AbsListView $ RecycleBin.addScrapView(AbsListView.java:6588) [英] Android AbsListView$RecycleBin.addScrapView(AbsListView.java:6588)

查看:75
本文介绍了Android AbsListView $ RecycleBin.addScrapView(AbsListView.java:6588)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我不明白为什么会出现此错误:

So, I don't understand why appear this error:

04-06 17:51:10.252:E/AndroidRuntime(10745):致命异常:主 04-06 17:51:10.252:E/AndroidRuntime(10745):进程: com.stm.classlife,PID:10745 04-06 17:51:10.252: E/AndroidRuntime(10745):java.lang.ArrayIndexOutOfBoundsException: 长度= 2; index = 2 04-06 17:51:10.252:E/AndroidRuntime(10745):at android.widget.AbsListView $ RecycleBin.addScrapView(AbsListView.java:6588) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.widget.ListView.layoutChildren(ListView.java:1632)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.widget.AbsListView.onTouchMove(AbsListView.java:3763)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.widget.AbsListView.onTouchEvent(AbsListView.java:3632)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.View.dispatchTouchEvent(View.java:8471)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2399) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2092)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)04-06 17:51:10.252:E/AndroidRuntime(10745):在 com.android.internal.policy.impl.PhoneWindow $ DecorView.superDispatchTouchEvent(PhoneWindow.java:2369) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1719) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.app.Activity.dispatchTouchEvent(Activity.java:2742)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.support.v7.app.ActionBarActivityDelegateICS $ WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java:268) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:2330) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.View.dispatchPointerEvent(View.java:8666)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4123) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ ViewPostImeInputStage.onProcess(ViewRootImpl.java:3989) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3544) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:3597) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:3563) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ AsyncInputStage.forward(ViewRootImpl.java:3680) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:3571) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ AsyncInputStage.apply(ViewRootImpl.java:3737) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3544) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:3597) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:3563) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:3571) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3544) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5807) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5781) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5752) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5897) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native 方法)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5868) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.ViewRootImpl $ ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5920) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.Choreographer $ CallbackRecord.run(Choreographer.java:767) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.Choreographer.doCallbacks(Choreographer.java:580)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.Choreographer.doFrame(Choreographer.java:548)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:753) 04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.os.Handler.handleCallback(Handler.java:739)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.os.Handler.dispatchMessage(Handler.java:95)04-06 17:51:10.252:E/AndroidRuntime(10745):在 android.os.Looper.loop(Looper.java:135)04-06 17:51:10.252: E/AndroidRuntime(10745):位于 android.app.ActivityThread.main(ActivityThread.java:5254)04-06 17:51:10.252:E/AndroidRuntime(10745):在 java.lang.reflect.Method.invoke(本机方法)04-06 17:51:10.252: E/AndroidRuntime(10745):位于java.lang.reflect.Meth

04-06 17:51:10.252: E/AndroidRuntime(10745): FATAL EXCEPTION: main 04-06 17:51:10.252: E/AndroidRuntime(10745): Process: com.stm.classlife, PID: 10745 04-06 17:51:10.252: E/AndroidRuntime(10745): java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6588) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.widget.ListView.layoutChildren(ListView.java:1632) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.widget.AbsListView.onTouchMove(AbsListView.java:3763) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.widget.AbsListView.onTouchEvent(AbsListView.java:3632) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.View.dispatchTouchEvent(View.java:8471) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2399) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2092) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106) 04-06 17:51:10.252: E/AndroidRuntime(10745): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2369) 04-06 17:51:10.252: E/AndroidRuntime(10745): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1719) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.app.Activity.dispatchTouchEvent(Activity.java:2742) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java:268) 04-06 17:51:10.252: E/AndroidRuntime(10745): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2330) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.View.dispatchPointerEvent(View.java:8666) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4123) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3989) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3544) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3597) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3563) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3680) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3571) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3737) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3544) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3597) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3563) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3571) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3544) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5807) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5781) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5752) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5897) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5868) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5920) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.Choreographer.doCallbacks(Choreographer.java:580) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.Choreographer.doFrame(Choreographer.java:548) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.os.Handler.handleCallback(Handler.java:739) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.os.Handler.dispatchMessage(Handler.java:95) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.os.Looper.loop(Looper.java:135) 04-06 17:51:10.252: E/AndroidRuntime(10745): at android.app.ActivityThread.main(ActivityThread.java:5254) 04-06 17:51:10.252: E/AndroidRuntime(10745): at java.lang.reflect.Method.invoke(Native Method) 04-06 17:51:10.252: E/AndroidRuntime(10745): at java.lang.reflect.Meth

有人知道如何解决吗?

推荐答案

在您的崩溃日志中,以下是相关行:

From your crash logs here is the relevant line:

android.widget.AbsListView $ RecycleBin.addScrapView(AbsListView.java:6588)

android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6588)

if (mViewTypeCount == 1) {
    mCurrentScrap.add(scrap);
} else {
    mScrapViews[viewType].add(scrap);
}

基本上,当您在屏幕外滚动列表视图项目并且回收者尝试回收该项目时,会发生这种情况.由android.widget.Adapter#getItemViewType(int)返回的该视图的视图类型将抛出您的java.lang.ArrayIndexOutOfBoundsException: length=2; index=2.

Essentially this happens when you scroll a list view item off-screen and the recycler tries to reclaim it. View type for this view, as returned by android.widget.Adapter#getItemViewType(int), is throwing your java.lang.ArrayIndexOutOfBoundsException: length=2; index=2.

请参见 android.widget.Adapter#getItemViewType(int) :

注意:整数必须在0到getViewTypeCount()-1的范围内.

Note: Integers must be in the range 0 to getViewTypeCount() - 1.

我有同样的问题.检查getItemViewType(int)的替代方法,并确保您返回的是连续的零索引数字.由于您的getViewTypeCount()方法返回2,因此您的商品类型常量必须为0和1.

I had the same problem. Check your override method for getItemViewType(int), and ensure that you're returning consecutive zero-index numbers. Since your getViewTypeCount() method is returning 2, then your constants for item type must be 0 and 1.

这篇关于Android AbsListView $ RecycleBin.addScrapView(AbsListView.java:6588)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆