【问题标题】:java.lang.IndexOutOfBoundsException at ListView androidListView android 上的 java.lang.IndexOutOfBoundsException
【发布时间】:2014-11-24 14:47:45
【问题描述】:

当我设置页脚视图时,我在ListView 中遇到了一些奇怪的问题。我正在添加页脚链接以在到达ListView 中的末尾元素时加载更多内容,并在加载时将其删除。 ListViewCursorAdapter 为后盾

在 Kitkat 之前它运行良好,没有任何问题,但是当我在加载更多元素时更改片段时,随着 android L 更新,它崩溃并出现以下跟踪:

11-15 17:20:19.532: E/AndroidRuntime(11784): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
11-15 17:20:19.532: E/AndroidRuntime(11784):  at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at java.util.ArrayList.get(ArrayList.java:308)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.widget.ListView.dispatchDraw(ListView.java:3307)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.draw(View.java:15117)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.widget.AbsListView.draw(AbsListView.java:4083)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14048)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.draw(View.java:14838)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14043)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.draw(View.java:14838)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.draw(View.java:15117)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14048)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.draw(View.java:14838)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14043)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.draw(View.java:14838)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14043)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.draw(View.java:14838)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:1057)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.draw(View.java:15117)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14048)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.draw(View.java:14838)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14043)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.draw(View.java:14838)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.drawChild(ViewGroup.java:3404)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3210)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14043)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3388)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3367)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14008)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3388)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3367)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14008)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3388)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3367)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14008)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3388)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3367)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.updateDisplayListIfDirty(View.java:14008)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.View.getDisplayList(View.java:14071)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3388)
11-15 17:20:19.532: E/AndroidRuntime(11784):  at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3367)

当我删除页脚时,它工作正常。我正在使用AsyncTask 加载更多内容并将值插入表中,并使用notifyChange 通知更改。

我不知道我做错了什么。如果有人告诉我这个问题会很好。

【问题讨论】:

  • 显示错误所在的代码
  • 你使用游标加载器吗?
  • 是的,我正在使用 CursorLoader。错误不在我的代码中。但我不知道究竟是哪个导致了我的问题。

标签: android listview android-listview


【解决方案1】:

我有完全相同的问题/相同的堆栈跟踪。在我的情况下,我使用支持 v4 库来支持片段,并在添加片段期间使用 setCustomAnimations。当我没有设置 popExit 动画时,问题就停止了。也许这也是你的情况。
我没有找到任何其他解决方法,我认为这只是支持库中的错误。有用的话题 Remove with delayAnimation between fragments

【讨论】:

  • 同样的问题,删除 setTransaction({ANY}) 解决了问题
  • 同样的问题,但我没有页眉/页脚。更新列表项之间的某种竞争条件是否会导致此崩溃。我删除了动画,没有崩溃。但是我需要动画,所以我添加了( if (position >= listItems.size()) ) return false;改为 isEnabled()。
【解决方案2】:

我通过调用解决了这个问题:

arrayAdapter.notifyDataSetChanged()

然后:

list.removeFooterView(footerVIew)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2023-03-28
    • 2014-01-20
    • 1970-01-01
    相关资源
    最近更新 更多