2013-01-17 3 views
2

Je fais l'activité GridView qui montre d'abord l'image par défaut, puis je démarre un nouveau thread pour netowrk tâche de télécharger l'image à partir de la base de données, et je voudrais qu'après le thread est terminé, le GridView sera automatiquement rafraîchir les images dans la grille.Comment rafraîchir android GridView

from this question i a pris le code suivant:

ImageAdapter adapt = (ImageAdapter)gridView.getAdapter(); 
adapt.setBitmap(bitmaps); 
adapt.notifyDataSetChanged(); 

qui mettent à jour l'adaptateur de la grille. Je fais ce 3 lignes dans la méthode onResume() mais après la fin du fil j'ai besoin d'appeler la méthode onResume() en quelque sorte (en mettant en pause l'activité ou quelque chose simillar).

maintenant si je me déplace vers une autre activité (comme une des images de la grille), puis appuyez sur le bouton de retour je peux voir l'image de la grille que je viens de télécharger de la base de données. (parce qu'il appelle la méthode de pause(), puis onResume())

Est-ce que quelqu'un a une solution à ce problème?

Merci

Edit: Le fil est en cours d'exécution par la méthode AsyncTask

Répondre

0

après l'arrivée de fil que je dois appeler le onResume() en quelque sorte (en arrêtant l'activité ou somthing simillar).

Plutôt que d'appel onResume() par la force, il suffit de déplacer ces trois lignes dans une nouvelle méthode, appelez refreshAdapter(). Ensuite, appelez refreshAdapter() à l'intérieur onResume() et partout où vous voulez rafraîchir l'adaptateur.

+1

Cela ne fonctionne pas. mais le problème est que j'utilise adapter.notifyDataSetChanged(); il exécute à partir du deuxième thread, dont il ne peut pas mettre à jour les éléments de l'interface utilisateur. et cette méthode fonctionne sur l'interface utilisateur. –

+1

@NoamMizrachi utilise runOnUiThread pour effectuer des changements d'interface utilisateur à partir d'un thread –

+0

Utilisez-vous un vrai thread ou un AsyncTask? Si vous utilisez un thread, vous pouvez créer un rappel simple. – Sam