2016-03-23 20 views
3

私はAsyncTaskを使用し、doInBackground()を使用します。私は多くのネットワークコールを行っています。それぞれの呼び出しは私にlistViewに追加したい新しいデータオブジェクトを与えます。AsyncTaskで受け取った各アイテムの後でnotifyDataSetChangedを呼び出します。

私はonPostExecute()notifyDataSetChanged()を呼び出し、すべての私の項目に私のリストを更新することができます知っているが、その可能性は何とか私は新しいアイテムを受け取るときnotifyDataSetChanged()を呼び出して、私のlistView同じ瞬間を更新し、持っていないしている場合、私は思ったんだけどdoInBackgroundの作業がすべて終了するまで待つ。

私はAsyncTaskでこれを行うことができない場合は、そのようなものに対処する適切な方法は何ですか?

はあなたdoInBackground(...)から

+0

同じようにVolleyライブラリを使用できます。あなたはRequestQueueをセットアップすることができ、onResponseメソッドでlistviewを更新できます。要求キューの設定については、このリンクをクリックしてください。 http://developer.android.com/training/volley/requestqueue.html –

答えて

3

コールpublishProgress(...)に感謝し、あなたのAsyncTaskonProgressUpdate(...)をオーバーライドし、そこnotifyDataSetChanged()を呼び出します。 doInBackground(...)からpublishProgress(...)を呼び出す

は、したがって、あなたがそこからListViewを更新することができ、それがメインUIスレッド上onProgressUpdate(...)だ呼び出すことAsyncTaskに指示します。

+2

notifyDataSetChanged()の代わりにアダプタが各インサートで通知されているので、notifyItemInsterted()を呼び出すことができます。 –

+0

@RusheelJainありがとう、私はそれを念頭に置いておきます。 – Mes

+1

@RusheelJain +1しかし、 'notifyItemInsterted(...)'は 'RecyclerView'だけで動作し、@Mesは' ListView'を使用していると思います。私が間違っていれば私を修正してください。 – camelCaseCoder

関連する問題