Comment mettre à jour l'interface utilisateur d'asynctask
J'ai vu de nombreux exemples de la façon de le faire, mais je ne peux comprendre comment l'implémenter dans mon code.
J'en utilisant cette code.
J'ai mis à jour l'url, donc il va recevoir un json avec des données dynamiques.
Ce que j'essaie de faire est de mettre à jour automatiquement la liste de toutes les 30 secondes avec ce code.
Handler handler = new Handler();
Runnable refresh = new Runnable() {
public void run() {
new GetContacts().execute();
handler.postDelayed(refresh, 30000);
}
};
Vivifié, et appeler l'url et obtient les données, mais l'INTERFACE n'est pas actualisé.
Remercier pour tous les conseils qui m'aide dans la bonne direction.
http://www.androidhive.info/2012/01/android-json-parsing-tutorial/
source d'informationauteur Bjorn
Vous devez vous connecter pour publier un commentaire.
Vous avez trois protégé méthodes dans une AsyncTask qui peuvent interagir avec l'INTERFACE utilisateur.
onPreExecute()
doInBackground()
onPostExecute()
doInBackground()
complèteonProgressUpdate()
doInBackground()
l'appelle avecpublishProgress()
Si dans votre cas, la Tâche s'exécute beaucoup plus longtemps que les 30 secondes, vous voulez vous rafraîchir, vous voulez faire usage de
onProgressUpdate()
etpublishProgress()
. SinononPostExecute()
devrait faire l'affaire.Voir le la documentation officielle pour savoir comment la mettre en œuvre.
Vous pouvez utiliser
AsycTask
et mise à jourlist ui
sur la tâche terminée dans lesonPostExecute
.Mise à jour
Pas besoin d'utiliser
runOnUiThread
à l'intérieur deonPostExecute
, Parce que c'est déjà appelé et du corps c'est exécutée en vertu deUIThread
.La première chose, c'est à l'aide de postdelayed() ne fonctionnera pas votre code dans la répétition, Si vous voulez exécuter le code de motif répétitif utiliser ce code. Cela permettra de courir après toutes les 5 sec
Le code suivant est la création d'une nouvelle instance de SimpleAdapter dans postExecute() à chaque fois donc vous verrez les mêmes données, encore et encore. Donc, si vous voulez mettre à jour votre adaptateur créer SimpleAdapter instance en tant que membre de la classe et de remplacer le postExecute() par ce
Maintenant, ce sera la mise à jour de l'adaptateur, mais d'ajouter de contacts