Boopathy
Boopathy

Reputation: 367

java.lang.IndexOutOfBoundsException at ListView android

I am facing some strange issue in the ListView when I set a footer view. I'm adding the footer link to load more on reaching the end element in ListView, and removing it when it's loaded. And the ListView is backed with CursorAdapter.

It was working well without any issue till Kitkat, but with android L update when I change fragment while loading more elements, it crashes with following trace:

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)

When I remove the footer it is working fine. I'm loading more with AsyncTask and inserting the values in the table, and notify changes using notifyChange.

I don't know what am I doing wrong. It would be nice if someone tell me about this issue.

Upvotes: 3

Views: 1729

Answers (2)

Tarasantan
Tarasantan

Reputation: 1

I solved this problem by calling:

arrayAdapter.notifyDataSetChanged()

and then:

list.removeFooterView(footerVIew)

Upvotes: -1

Warlock
Warlock

Reputation: 2711

I have exactly the same problem / same stacktrace. In my case I'm using support v4 library for Fragments and using setCustomAnimations during adding Fragment. The problem stop happening when I didn't set popExit animation. Maybe this is also your case.
I didn't find any other workaround and I think it's just bug in support library. Useful topics Remove with delay or Animation between fragments.

Upvotes: 4

Related Questions