Je me demande comment je doit mettre en œuvre un ListAdapter
qui charge ses vues de manière asynchrone dans un ListView
? Je veux faire ça parce que je suis le remplissage de la liste avec des informations de ma base de données, ce qui est fait de mon activité un peu lent à charger à la fois.
source d'informationauteur Emil Sjölander
Vous pouvez utiliser un
AsyncTask
et l'utilisation de laonPostExecute
méthodes de publier le nouveau chargé résultats:La meilleure approche que j'ai vu jusqu'à présent est de CommonsWare. Il a été constaté en ce qui concerne réponse.
La chose la plus facile est d'utiliser un AsyncTask pour faire le chargement et l'appel
publishProgress
que chaque élément est chargé (ou, si vous voulez charger tous les éléments et de les faire apparaître tout à la fois, mise à jour de l'INTERFACE utilisateur dansonPostExecute
Est .notifyDataSetChanged() probablement ce que vous recherchez? Chaque fois que vous ajoutez un nouvel élément à la liste de sauvegarde de la ArrayAdapter, vous pouvez appeler .notifyDataSetChanged() sur l'adaptateur en instance de le dire à actualiser. De cette façon, votre ListView progressivement et l'affichage de chaque élément comme ils sont ajoutés à la liste.
Utilisation
AsyncTask.
Qui peuvent vous aider à récupérer vos données en arrière-plan.Avec Kotlin et la Kotlin les bibliothèques d'extension, cette tâche a obtenu façon plus facile. Vous pouvez utiliser le doAsync/uiThread construire dans une bibliothèque appelée Anko avec une fraction de la code. Dans le lien tutoriel ci-dessous-je utiliser cette bibliothèque pour remplir une ListView avec des cours de la bourse de l'appel d'une API REST de manière Asynchrone avec Kotlin. Kotlin est entièrement intégré dans Android Studio:
http://www.todroid.com/creating-a-stock-pricing-application-with-kotlin-for-android/