1. 程式人生 > >ListView資料動態重新整理

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的重新整理。