0

J'ai un petit problème Je passe beaucoup de temps maintenant. J'espère que vous pouvez m'aider. Eh bien, j'ai une activité qui charge le contenu de la base de données en arrière-plan. Il retourne l'asynchronie et modifie mon modèle de données. Maintenant, je cherche un bon moyen d'informer le contrôleur pour mettre à jour la vue. J'utilise la méthode notifyDataChanged mais j'ai une exception. Android ne permettent pas de modifier une vue d'un autre fil. À mon avis, c'est une fonctionnalité de base. Il doit donc y avoir un moyen de mettre en œuvre une telle fonctionnalité.Asynchronous view manipulation android

Pouvez-vous me donner un indice. Je regarde aussi la classe d'observateur de contenu. Mais je ne pense pas que ce soit le bon.

Merci

Répondre

0

S'il vous plaît fournir quelques extraits de code de votre Activity. Si vous utilisez AsynkTask qui est la meilleure méthode de traitement en arrière-plan sur les données, vous devez utiliser la méthode onPostExecute() pour mettre à jour votre interface utilisateur, car doInBackground() s'exécute sur un thread d'arrière-plan, pas sur l'UIThread.

Une solution serait de déclarer un Handler dans votre Activity et poster un nouveau Runnable dans ce Handler quand vous voulez acccess l'interface utilisateur, quelque chose comme ceci:

mHandler.post(new Runnable() { 
     @Override 
     public void run() { 
      mAdapter.notifyDataSetChanged(); 
     } 
    }); 

Mais ceci est en quelque sorte un « hack » et je ne recommanderais pas d'utiliser cela. Le meilleur moyen serait d'utiliser le AsyncTask.

+0

Merci! Cela me semble correct. Je ne connais pas cette classe jusqu'à maintenant ... –

+0

Cela peut déclencher IllegalStateException {}, vous devez exécuterOnUITheure() –