2012-12-03 5 views
-1

J'ai besoin d'afficher l'image de contact des utilisateurs dans mon ListView personnalisé. Je suis capable de récupérer des images via AsyncTask, mais je ne suis pas en mesure de définir l'image car la liste sera déjà chargée, avant la fin de AsyncTask. J'appelle le AsycTask pour chaque ligne de la liste. J'ai l'Image Uri en main après la fin de l'AsyncTask. S'il vous plaît donner quelques idées sur la façon de le faire. J'utilise un adaptateur de base personnalisé pour ce faire. Je suis capable de remplir ImageView si j'utilise la méthode AsyncTask(). Get() mais bloque le thread d'interface utilisateur et annule le but de AsyncTask.Android ListView personnalisé avec l'image de contact

Répondre

0

Enfin, j'ai été capable de trouver le problème .. La méthode onPostExecute() de ma classe AsyncTask n'est pas exécutée après doInBackground(). La raison pour laquelle elle n'est pas appelée est qu'elle ne peut prendre que des paramètres Object, comme onPostExecute (Object .. args). Tout le code de réglage de mon image a été écrit dans onPostExecute().

0

Vous pouvez charger le ListView dans la méthode onPostExecute() de votre AsyncTask. De cette façon, vous garantissez que la tâche asynchrone sera terminée avant le chargement de ListView.

Vous pouvez afficher un ProgressDialog pendant l'exécution de la tâche asynchrone pour indiquer à l'utilisateur que l'extraction de données est en cours.

+0

Merci pour la réponse, mais AsyncTask prend plus de 10 secondes à charger. Ce que j'ai à l'esprit est de montrer une icône de mannequin et plus tard, après AsyncTask finit, montrer un vrai –

+0

Ce serait aussi une bonne option. –

0

Cela dépend de la ListAdapter que vous utilisez, mais par exemple, si vous utilisez un ArrayAdapter, je pense que vous pouvez simplement appeler ArrayAdapter.notifyDataSetChanged() et il rechargera tous vous (visibles) vues en utilisant ArrayAdapter.getView().

Une option plus compliquée consisterait à enregistrer des références aux ImageView s, mais ce serait un peu compliqué car les listes ne conservent que des vues pour les lignes de liste visibles.

+0

J'utilise un BaseAdapter personnalisé pour ListView. Une classe titulaire est utilisée pour contenir les TextViews et ImageView. Y at-il de toute façon je peux passer l'Image Uri. merci d'avance –

+0

En fait il y a 'BaseAdapter.notifyDataSetChanged()'. Appelez ça. – Timmmm

Questions connexes