Android List分部載入遇到的一些問題

l_serein發表於2012-07-01

描述一下場景:

   選單欄上有若干分類,點選每一個分類,ListView下分根據分類顯示出相應的內容.

--------------------------

1.切換分類時出現異常.描述如下:

    E/AndroidRuntime(8131): java.lang.IndexOutOfBoundsException: Invalid index 11, size is 0

    E/AndroidRuntime(8131): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)

    E/AndroidRuntime(8131): at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)

可能的原因是這樣的:

   我切換分類的時候,ListView要先清空,然後再ListView再滾動的時候記下了下一次的Index.再去載入的時候就出現了IndexOutOfBoundsException. 所以,我在切換分類的時候加上

mAnnouncementLv.setAdapter(mBulletinAdapter);

加上這個就OK,不報邊界溢位錯誤了... 

但時運不濟,命途運多舛.通往成功的道路從來都不是一帆風順地.當然又報別的錯了

---------------------------

場景描述:

由於是分部載入,所以載入到底部時會出現一個正在載入的FooterView.就是在去掉FooterView時,報錯了.

2. 去除footerView時的錯誤

異常如下:

E/AndroidRuntime(8234): java.lang.ClassCastException: com.gpcsoft.Announcement.Adapter.BulletinAdapter

E/AndroidRuntime(8234): at android.widget.ListView.removeFooterView(ListView.java:463)

E/AndroidRuntime(8234): at com.gpcsoft.Announcement.SubscriptionActivity.onScroll(SubscriptionActivity.java:285)

在去除FooterView的時候出現了型別轉換異常... ...這是怎麼回事??

上網查到了這麼一段話

新增,移除ListView的headerView或者是footerView需要注意的地方?

      新增:關於addHeaderView方法文件上有這麼一句話,“Call this before calling setAdapter”,在呼叫這個方法之前,先要設定ListView的Adapter。addFooterView方法同樣

      移除:用到了系統提供的removeHeaderView或者removeFooterView方法,雖然文件上沒有說明,但是呼叫這個方法應該在setAdapter之後。

這是之前就遇到過了,當時把addFooterView放在之後,結果沒有效果.

那麼由此,是Adapter報出來的也就不足為奇了,因為更換過Adapter,那我之後先去掉Adapter再新增上去了.

再每次清除ListView時變成這樣:

mPageNum = 1;

mBulletinList.clear();

if(mAnnouncementLv.getFooterViewsCount()>0){

mAnnouncementLv.removeFooterView(mLoadLayout);

}

mAnnouncementLv.addFooterView(mLoadLayout);

mAnnouncementLv.setAdapter(mBulletinAdapter);

OK,不報錯了... ...

相關文章