IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Actualiser ListView AsyncTask


Sujet :

Composants graphiques Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    etudiant Informatique
    Inscrit en
    Novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant Informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Actualiser ListView AsyncTask
    Bonjour,
    je développe une application qui récupere des données via JSON.
    Au début je faisait ça sans utiliser asynctask, ce qui bloquait l'utilisateur. Et j'essais en ce moment d'implémenter cette méthode. J'utilise donc asynctask,
    qui m'affiche un boite de dialogue pendant le chargement des données et me l'enleve lorsque les données on été récupérées dans une arrayList.
    Je récupere donc une arrayList<String> et j'aimerais mettre à jour la listView simplement.
    Or dans la méthode onPostExecute, je n'arrive pas à le faire.
    Ce que j'aimerais faire une fois le chargement fini :
    maListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,android.R.id.text1,maStringList));

    Je précise sa ne fait que quelque semaines que je code sur android.
    Si quelqu'un peut m'aider à avancer ...

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    class MyActivity extends Activity
    {
     
        ListView getListView() {
           return (ListView) findViewById(...);
        }
     
        class MyAdapterTask extends AsyncTask<...> {
            ...
            public void onPostExecute(List<String> data) {
                MyActivity.this.getListView()
                        .setAdapter(new ArrayAdapter<String>(MyActivity.this, android.R.layout.simple_list_item_1,android.R.id.text1,maStringList));
            }
         }
     
     
         ... utilisation par:
         new MyAdapterTask(..).execute();
     
    }
    On notera l'absence de 'static' pour la classe MyAdapterTask qui la relie de-facto à l'instance de la classe parente qui l'a créé.... D'ou la possibilité de récupérer cette instance par CLASSPARENTE.this

    Autre solution (que j'aime bien parce qu'elle sépare la logique de l'interface):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    class MyDownloadTask extends AsyncTask<...>
    {
          public static interface Callback
          {
              public void onDataReceived(List<String> data);
          }
     
          Callback   callback;
     
          MyDownloadTask(..., Callback cb)
          {
              ...
              this.callback = cb;
          }
     
          ...
     
          public void onPostExecute(List<String> data)
          {
              this.callback.onDataReceived(data);
          }
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class MyActivity extends Activity implements MyDownloadTask.Callback
    {
     
         public void onDataReceived(List<String> data)
         {
             ListView lv = (ListView) findViewById(...);
             lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,android.R.id.text1,maStringList));
         }
     
     
         ... Utilisation par:
         new MyDownloadTask(...,this).execute();
    }
    On notera qu'à chaque fois on passe obligatoirement une référence sur 'this' que ce soit caché (classe fille) ou explicite
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Futur Membre du Club
    Homme Profil pro
    etudiant Informatique
    Inscrit en
    Novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant Informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Super, merci beaucoup, sa fonctionne
    J'ai opté pour la première solution. Maintenant je sais comment récupérer ma listview dans une autre class
    Merci, encore sa faisait des jours que je cherchait comment faire.

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Si le code n'est pas réutilisé la première solution est la plus rapide...
    La seconde permet de coller le code partout ou l'on veut.

    Si le sujet est résolu... on n'oublie pas de cliquer sur résolu !
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ListView JSON et Asynctask
    Par GJuubz dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 28/12/2013, 15h10
  2. Actualiser une ListView
    Par Whiden dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 27/05/2013, 16h35
  3. [XL-2007] Actualiser listview a la fermeture d'une autre USF
    Par Biker_45 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/07/2012, 10h12
  4. Actualiser l'affichage d'une ListView
    Par karamovic dans le forum Composants graphiques
    Réponses: 7
    Dernier message: 22/05/2012, 20h28
  5. Problème d'actualisation d'un listview avec WM_NEXTDLGCTL
    Par benito9253 dans le forum Visual C++
    Réponses: 4
    Dernier message: 17/12/2010, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo