ListView數據動態刷新

       在Android開發中用到ListView時,經常遇到要更改ListView內容的情形,比如刪除或增加ListView中顯示的條目,這裏給大家提供一下思路:不論ListView要顯示的對象是什麼(如:Cursor或Array或List),要實現ListView數據的更新,都要手動去更改要顯示的數據對象,然後調用相應的方法(如:requery()或notifyDataSetChanged())來刷新ListView。針對不同的情形,下面給出相應解決辦法的關鍵代碼:

1.用ListView來顯示數據庫的數據時,經常會用到SimpleCursorAdapter來作爲ListView的適配器,這時要用到Cursor來訪問數據庫,當數據庫數據發生改變時,需要通過cursor.requery()方法來更新ListView。注:這個方法在API11以後被廢棄了,原因是執行該方法是會查詢數據庫,如果查詢動作是在主線程(UI線程)中完成的,由於查詢過程要耗一定時間,所以有可能引起ANR。可以通過重新獲取一個新的cursor來解決這個問題。

2.當ListView顯示的數據時通過Array或者List傳入的時候,要實現ListView數據的更新,就要手動來更改Array或者List,

以List爲例,要調用list.add()或者list.remove()方法來增加或刪除數據。然後再調用adapter.notifyDataSetChanged()來更新顯示數據。

    總的來說,要實現ListView數據的更新,實質是實現對應的Adapter中顯示數據的更新。而要實現Adapter數據更新,就要自己手動來完成對應數據的更改,如上面提到的requery()或者list.add()、list.remove()等,然後再調用adapter的notifyDataSetChanged()方法來實現ListView的刷新。

發佈了52 篇原創文章 · 獲贊 178 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章