2016-03-23 15 views
3

Bir AsyncTask kullanıyorum ve doInBackground() Çok fazla ağ araması yaptığım bir döngü var. Her arama bana listView numarama eklemek istediğim yeni bir veri nesnesi verir.Çağrı notifyDataSetSynyncTask içinde aldığım her öğeden sonra değiştirildi

ben onPostExecute() üzerinde notifyDataSetChanged() çağrı ve tüm öğeleri ile benim listesini güncellemek biliyor ama onun olası bir türlü sahip olmamak ben yeni bir öğe aldığınızda notifyDataSetChanged() arayıp benim listView aynı anda güncellemenizi ve merak ediyorum doInBackground'daki tüm çalışmalar bitene kadar beklemek.

Bunu yapmak için AsyncTask ile bir yol yapamazsam, böyle bir şeyle başa çıkmak için uygun yol nedir?

doInBackground(...) dan size

+0

Aynı şey için Volley kütüphanesini kullanabilirsiniz. RequestQueue'yu kurabileceğiniz ve onResponse yönteminde liste görünümünü güncelleyebilirsiniz. İstek kuyruğu kurulumu için bu bağlantıyı takip edin. http://developer.android.com/training/volley/requestqueue.html –

cevap

3

Çağrı publishProgress(...) ederiz ve sizin AsyncTask içinde onProgressUpdate(...) geçersiz kılmak ve orada notifyDataSetChanged() arayın. doInBackground(...) den publishProgress(...) çağrılması

dolayısıyla oradan ListView güncelleyebilir, ana UI iş parçacığı üzerinde onProgressUpdate(...) var çağırmak AsyncTask talimatını verir.

+2

NotifyDataSetChanged() notifyItemInsterted() yerine, her ekte adaptör bildirildiğinden yalnızca küçük bir not çağrılabilir. –

+0

@RusheelJain teşekkürler, bunu aklımda tutacağım. – Mes

+1

@RusheelJain +1 ama inanıyorum 'IadeInsterted (...) 'sadece' RecyclerView' için çalışır ve @Mes 'ListView' kullanıyor. Yanlışım varsa lütfen düzelt. – camelCaseCoder