Dra*_*ken 20 java android listview indexoutofboundsexception commonsware-cwac
我有一个有大量下载的应用程序,我收到了很多这个错误:
16783 AndroidRuntime E java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
16783 AndroidRuntime E at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
16783 AndroidRuntime E at java.util.ArrayList.get(ArrayList.java:311)
16783 AndroidRuntime E at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:16
4)
16783 AndroidRuntime E at android.widget.ListView.dispatchDrawWithExcessScroll_Default(ListView.java:3
288)
16783 AndroidRuntime E at android.widget.ListView.dispatchDraw(ListView.java:3029)
16783 AndroidRuntime E at android.view.View.draw(View.java:6743)
16783 AndroidRuntime E at android.widget.AbsListView.draw(AbsListView.java:2549)
16783 AndroidRuntime E at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
16783 AndroidRuntime E at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
16783 AndroidRuntime E at android.view.View.draw(View.java:6743)
16783 AndroidRuntime E at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
16783 AndroidRuntime E at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
16783 AndroidRuntime E at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
16783 AndroidRuntime E at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
16783 AndroidRuntime E at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
16783 AndroidRuntime E at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
16783 AndroidRuntime E at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
16783 AndroidRuntime E at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
16783 AndroidRuntime E at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
16783 AndroidRuntime E at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
16783 AndroidRuntime E at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
16783 AndroidRuntime E at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
16783 AndroidRuntime E at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
16783 AndroidRuntime E at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
16783 AndroidRuntime E at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
16783 AndroidRuntime E at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
16783 AndroidRuntime E at android.view.View.draw(View.java:6743)
16783 AndroidRuntime E at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
16783 AndroidRuntime E at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
16783 AndroidRuntime E at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
16783 AndroidRuntime E at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
16783 AndroidRuntime E at android.view.View.draw(View.java:6743)
16783 AndroidRuntime E at android.widget.FrameLayout.draw(FrameLayout.java:352)
16783 AndroidRuntime E at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java
:1885)
16783 AndroidRuntime E at android.view.ViewRoot.draw(ViewRoot.java:1407)
16783 AndroidRuntime E at android.view.ViewRoot.performTraversals(ViewRoot.java:1163)
16783 AndroidRuntime E at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
16783 AndroidRuntime E at android.os.Handler.dispatchMessage(Handler.java:99)
16783 AndroidRuntime E at android.os.Looper.loop(Looper.java:123)
16783 AndroidRuntime E at android.app.ActivityThread.main(ActivityThread.java:4627)
16783 AndroidRuntime E at java.lang.reflect.Method.invokeNative(Native Method)
16783 AndroidRuntime E at java.lang.reflect.Method.invoke(Method.java:521)
16783 AndroidRuntime E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:8
58)
16783 AndroidRuntime E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
16783 AndroidRuntime E at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
正如您在堆栈跟踪中看到的那样,我的代码跟踪中没有一行.为了重现这一点,我幸运地找到了一个带有Froyo(2.2 p7)的用户,我只是向下滚动了ListView代码中的一个.在一些随机时间之后,它只是冻结了这个例外.每次在不同的时间发生这种情况.
这是一个ListView与EndlessAdapter它后面,只是添加越来越多的行.显然我在进行"过度滚动"时会出现此错误,但我甚至无法想到解决此问题的方法.复制很难,但每次有近200名在线用户,如果他们不断收到此错误,他们最终将不再使用该应用程序.
任何帮助,将不胜感激.
编辑:与其他人有类似的问题EndlessAdapter.http://groups.google.com/group/cw-android/browse_thread/thread/4739ce05742841da/af59c779e99f5e23?lnk=gst&q=index#af59c779e99f5e23
但这不是EndlessAdapter错.这是android的错.
Dra*_*ken 34
经过大量的时间检查android源代码而不理解这个错误我终于破解了它.
出现该问题与三星手机,他们有过滚动功能的不同实现方式,并且最终引发此例外,因为它试图选择一个页脚/头出界(即使没有页脚视图).
我使用的解决方案并不漂亮,但它会阻止此错误再次发生.
class MyFixedListView extends ListView {
@Override
protected void dispatchDraw(Canvas canvas) {
try {
super.dispatchDraw(canvas);
} catch (IndexOutOfBoundsException e) {
// samsung error
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我使用此ListView实现,错误消失了.
我真的希望这能帮助任何使用无限适配器的人