2012-02-18 92 views
0

我期待刷新ListView而不重新加載頁面。更確切地說,我有一個服務,在Activity中發送ListView的數據,但ActivityService可以獲取數據之前很久才加載。所以我需要能夠在Activity已經加載之後加載/重新加載ListView我期待刷新ListView而不重新加載頁面

回答

1

撥打notifyDataSetChanged()即可,ListViewAdapter只要你想刷新它。

1

我發現notifyDataSetChanged only works if you use the add, insert, remove, and clear functions on the Adapter,所以我最後只是在一個類似的實現方式如下:

AsyncTask在獲取所有doInBackground數據。然後,完成後,我第一次在onPostExecute中設置了列表適配器。爲了讓用戶知道某些內容正在加載,我只需在Listview的頂部放置一個TextView,並在onPreExecute中將其文本設置爲「Loading ..」,然後在數據準備就緒時在onPostExecute中將其隱藏。

如果您需要刷新數據,則只需再次執行AsyncTask即可。

我喜歡這種方式,因爲您只設置了ArrayAdapter一次(即當您最終擁有所有數據時)。如果你需要的話,Here更多的是AsyncTask。該文檔有一些很好的示例代碼。

1

我會說使用IntentService而不是Service。通過使用IntentService,您將能夠將數據發送到背景Service,並在發射BroadCastReceiver以更新您的用戶界面時接收更新的數據。 Here是一個完整的例子,你如何使用IntentService來實現你的任務。