listview报错 IndexOutOfBoundsException、HeaderViewListAdapter.isEnabled

使用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之前设置

你可能感兴趣的:(gridview,项目遇到问题,listview)