2016-03-23 30 views
3

我使用AsyncTaskdoInBackground()我有一個循環,我正在進行大量網絡調用。每次調用都會給我一個新的數據對象,我想將它添加到我的listView在AsyncTask中收到的每個項目之後調用notifyDataSetChanged

我知道我可以在onPostExecute()調用notifyDataSetChanged(),並與我的所有項目更新我的列表,但我不知道是否它可能以某種方式調用notifyDataSetChanged()當我收到一個新的項目,並更新我的listView同一時刻,而不是有等到doInBackground的所有工作完成。

如果沒有辦法,我可以用AsyncTask做到這一點,那麼最好的辦法是處理這樣的事情?

謝謝

+0

您可以使用相同的Volley庫。你可以在哪裏設置RequestQueue並且在onResponse方法中可以更新列表視圖。對於請求隊列設置,請點擊此鏈接。 http://developer.android.com/training/volley/requestqueue.html –

回答

3

呼叫publishProgress(...)doInBackground(...)並在AsyncTask覆蓋onProgressUpdate(...)和呼叫notifyDataSetChanged()那裏。

調用從doInBackground(...)publishProgress(...)指示AsyncTask調用它的onProgressUpdate(...)主UI線程上,因此你可以從那裏更新ListView

+2

請注意,由於適配器在每次插入時都會收到通知,因此可以調用notifyDataSetChanged()notifyItemInsterted()。 –

+0

@RusheelJain謝謝,我會牢記這一點。 – Mes

+1

@RusheelJain +1,但我相信'notifyItemInsterted(...)'僅適用於'RecyclerView',@Mes正在使用'ListView'。如果我錯了,請糾正我。 – camelCaseCoder

相關問題