使用listview添加了footerview,放在onresume中请求列表数据,点击详情再返回列表,
重复此操作,报错如下:
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.get(ArrayList.java:437)
at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)
at android.widget.ListView.dispatchDraw(ListView.java:3503)
at android.view.View.draw(View.java:19148)
at android.widget.AbsListView.draw(AbsListView.java:4428)
at android.view.View.updateDisplayListIfDirty(View.java:18095)
at android.view.View.draw(View.java:18873)
at android.view.ViewGroup.drawChild(ViewGroup.java:4216)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002)
at android.view.View.draw(View.java:19148)
at android.view.View.updateDisplayListIfDirty(View.java:18095)
at android.view.View.draw(View.java:18873)
................................................................
at android.view.ViewGroup.drawChild(ViewGroup.java:4216)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002)
at android.view.View.draw(View.java:19148)
at android.view.View.updateDisplayListIfDirty(View.java:18095)
at android.view.View.draw(View.java:18873)
at android.view.ViewGroup.drawChild(ViewGroup.java:4216)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002)
at android.view.View.updateDisplayListIfDirty(View.java:18086)
at android.view.View.draw(View.java:18873)
at android.view.ViewGroup.drawChild(ViewGroup.java:4216)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002)
at android.view.View.draw(View.java:19148)
at com.android.internal.policy.DecorView.draw(DecorView.java:788)
at android.view.View.updateDisplayListIfDirty(View.java:18095)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:643)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:649)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:75
05-22 09:57:21.266 1471-1524/? E/ActivityTrigger:
activityStartTrigger: not whiteListedcom.dch.dai/com.dch.dai.activity.common.ExceptionActivity/22
05-22 09:57:21.267 1471-1524/? E/ActivityTrigger:
activityResumeTrigger: not whiteListedcom.dch.dai/com.dch.dai.activity.common.ExceptionActivity/22
05-22 09:57:21.292 1471-1829/? E/InputDispatcher:
channel '8f93aaa com.dch.dai/com.dch.dai.activity.common.WebActivity (server)' ~
Channel is unrecoverably broken and will be disposed!
05-22 09:57:21.293 1471-1829/? E/InputDispatcher:
channel '9eb1fd8 com.dch.dai/com.dch.dai.activity.home.MessageActivity (server)' ~
Channel is unrecoverably broken and will be disposed!
05-22 09:57:21.294 1471-1829/? E/InputDispatcher:
channel '30a3b7a com.dch.dai/com.dch.dai.activity.app.MainActivity (server)' ~
Channel is unrecoverably broken and will be disposed!
主要原因:listView列表数据变化的时候adapter没有刷新。
出现这个问题只需要
1、在listView.clear();后面加上adapter.notifyDataSetChanged();
pageNo = 1;
totalSize = 0;
if (totalLists != null && totalLists.size() > 0) {
totalLists.clear();
if (planAdapter != null) {
planAdapter.notifyDataSetChanged();
}
}
2、在totalLists.addAll(lists);后面加上adapter.notifyDataSetChanged();
totalLists.addAll(lists);
if (planAdapter != null) {
planAdapter.notifyDataSetChanged();
} else {
planAdapter = new PlanAdapter(context, totalLists);
myLoadMoreListView.setAdapter(planAdapter);
}
另外注意:
addFooterView要在setAdapter之前设置