Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 15
Utilisation des threads 169
setListAdapter(new ArrayAdapter(this,
android.R.layout.simple_list_item_1,
new ArrayList()));
new AddStringTask().execute();
}
class AddStringTask extends AsyncTask {
@Override
protected Void doInBackground(Void... inutilise) {
for (String item : items) {
publishProgress(item);
SystemClock.sleep(200);
}
return(null);
}
@Override
protected void onProgressUpdate(String... item) {
((ArrayAdapter)getListAdapter()).add(item[0]);
}
@Override
protected void onPostExecute(Void inutilise) {
Toast
.makeText(AsyncDemo.this, "Fini !", Toast.LENGTH_SHORT)
.show();
}
}
}
Il s’agit d’une autre variante de la liste de mots lorem ipsum qui a déjà été souvent utilisée
dans ce livre. Cette fois-ci, au lieu de simplement fournir la liste à un ArrayAdapter, on
simule la création de ces mots dans un thread en arrière-plan à l’aide de la classe
AddStringTask, notre implémentation d’AsyncTask.
Les sections qui suivent passent en revue les différentes parties de ce code.
Déclaration d’AddStringTask
class AddStringTask extends AsyncTask {
On utilise ici la généricité pour configurer les types de données spécifiques dont nous
aurons besoin dans AddStringTask :
● Nous n’avons besoin d’aucune information de configuration ; par conséquent, le
premier type est Void.
● Nous voulons passer à onProgressUpdate() chaque chaîne "produite" par notre tâche
en arrière-plan, afin de pouvoir l’ajouter à la liste. Le second type est donc String.
● Nous ne renvoyons pas de résultat à proprement parler (hormis les mises à jour) ; par
conséquent, le troisième type est Void.
Livre Android.book Page 169 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 184/391

Suivant