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

Android Discussion :

Comment faire une arborescence sous Android ?


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Comment faire une arborescence sous Android ?
    Salut,

    Je travaille sur une application android et je cherche comment faire pour parser les données récupérées de formats JSON et comment peut -on les mettre dans une arborescence ( exemple de données récupérées ==> des dossiers et des sous dossiers ).

    Merci d'avance.

    Cordialement.

  2. #2
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    utilise JSONArray et JSONObject

    par exemple pour un tableau JSON basique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    JSONArray jsonArray = new JSONArray(TableauDeDonnéesJSON);
     
    for(JSONObject unObject : jsonArray)
    {
         //tu vérifie que ta variable existe bien
         if(!unObject.isNull("LeNomDeTaVariable"))
         {
              //Elle existe et est pas null donc tu récupere sa valeur 
              //et la stocke dans la String taVariable
              String taVariable = unOject.getString("LeNomDeTaVariable");
         }
    }
    Apres tu peux construire des object a partir des données que tu récupere, enfin, libre a toi

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    merci pour votre réponse.

    Pour ""TableauDeDonnéesJSON"" que vous avez mis dans cette instruction (JSONArray jsonArray = new JSONArray(TableauDeDonnéesJSON); ), il correspond au tableau JSON qu'on veut parser ??

    sinon, pour mes données récupérées sont de cette format { id="1", type="dossier", Nom="dossier1"},{ id="2", type="Sousdossier", Nom="Sousdossier1"} .....

    donc je cherche à parser ces données et les mettre dans une arborescence (dossier-->sous dossier).

    merci d'avance.

  4. #4
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    Ok donc dans ce cas la j'imagine que
    { id="1", type="dossier", Nom="dossier1"},{ id="2", type="Sousdossier", Nom="Sousdossier1"}
    est stocker dans une string
    Le fait d'appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JSONArray jsonArray = new JSONArray(TableauDeDonnéesJSON);
    Va crée ton jsonArray qui te permetera de traité les données

    Pour ton probleme de dossier sousdossier, apparement d'apres ces donnée cela veut dire qu'il existe que 2 niveaux ?
    Comment sait on quel et le dossier parent ?

    Je ne sais pas si t'as access au données mais se serait plus évident si ton tes dossiers étaient des objects comme ceci car actuellement comment sais tu quel dossier est parent ou enfant de qui ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Class Dossier
    {
      private int id;
      private int idparent;
      private String nom;
    }
    Avec le dossier root (id=0) qui contient tout les dossiers

    Apres quand tu dis que tu veux le mettre dans une arborescence, tu parle de l'affichage comme un explorateur de dossier ?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    bonjour,

    Alors pour le problème de dossier et sous dossier, je cherche dans un premier temps juste à tester si le type="dossier", je le met comme dossier parent, sinon si le type="sousdossier", je vais le mettre comme un sous dossier.

    Pour mes données récupérées correspond à une liste des objets comme ce ceci : { id="1", type="dossier", Nom="dossier1"},{ id="2", type="Sousdossier", Nom="Sousdossier1"}.

    ET dans mon arborescence, qui correspond à un explorateur de dossiers et que je vais afficher sur un écran d'un terminal mobile "android", je veux mettre Dossier comme parent et sousdossier comme fils.

    merci pour votre aide.

  6. #6
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    Tu veux faire une ExpandableListView
    donc ici t'as un exemple avec le code ici

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    merciii pour ce tuto. c'est trés intéréssant pour construire une arborescence.

    Mais le problème que j'arrive pas à résoudre jusqu'à maintenant c'est de parser les données récupérées, en faisant une condition sur le type si = "dossier" ou ="sousdosier".
    alors je cherche une méthode ou bien une classe qui permet de faire ça.

    merciiii pour votre intérêt et votre aide.

  8. #8
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    La premiere reponse que je t'es donné permet de faire ça

    tes données sont stockés dans quoi ? une String ?

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    mes données ne sont pas stockés dans un tableau mais plutôt dans une String qui correspond à un truc comme ceci :


    [{"Id": "1", "Type": "Dossier","Label":"Dossier1},{"Id":"2","Type":"Sousdossier","Label":"Sousdossier1"}].

    Alors, lorsqu'on demande au serveur de nous envoyer les données, il nous envoie le résultat des données sous format JSON présentés ci dessous.

  10. #10
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Points : 129
    Points
    129
    Par défaut
    Ok, donc c'est une String
    Bon la pour le coup, je t'es tout fais donc regarde bien le code, evidement il faudra que t'anticipe le fait que si il manque certaines informations il faut que tu choisisses quoi faire

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    ArrayList<Dossier> dossiers = ArrayList<Dossier>();
     
    JSONArray jsonArray = new JSONArray(taString);
     
    for(JSONObject unDossier: jsonArray)
    {
         int id = 0;
         String type = "";
         String label = "";
         //tu vérifie que ta variable existe bien
         if(!unDossier.isNull("Id"))
         {
              //Elle existe et est pas null donc tu récupere sa valeur 
              //et la stocke dans int Id
              id = unOject.getInt("Id");
         }
         if(!unDossier.isNull("Type"))
         {
              //Elle existe et est pas null donc tu récupere sa valeur 
              //et la stocke dans int Id
              type = unOject.getString("Type");
         }
         if(!unDossier.isNull("Label"))
         {
              //Elle existe et est pas null donc tu récupere sa valeur 
              //et la stocke dans int Id
              label = unOject.getString("Label");
         }
         dossiers.add(new Dossier(id, type, label);
     
    }
     
    // a partir de la tu peux parcourir ton tableau de dossiers
    // ajoute un getter sur le type pour savoir quel type de dossier et ait en 
    // conséquence
    avec pour classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Class Dossier
    {
      private int id;
      private String type;
      private String label;
    }
     
    public Dossier(int _id, String _type, String _label)
    {
      this.id = _id;
      this.type = _type;
      this.label = _label
    }

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    merciii infiniment pour votre aide et votre intérêt que vous portez à mon problème.

    votre réponse était claire.
    Je vais essayer maintenant d'afficher les résultats trouvés dans une arborescence.

    merci encore une fois.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    bonjour, je sais pas pourquoi il y a un erreur au niveau de cette instruction : for(JSONObject unDossier: jsonArray)

    qui dit:
    Can only iterate over an array or an instance of java.lang.Iterable

  13. #13
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Parce que JSOnArray n'implémente pas Iterable, comme précisé dans l'erreur.

    Il faut donc que tu fasses une boucle plus "simple" (ie : for(int i...)
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    exactement, c'était ça la solution.

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

Discussions similaires

  1. Comment faire une ombre sous un texte ?
    Par Gunner4902 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 26/11/2007, 11h38
  2. Comment faire une temporisation sous Delphi ?
    Par vodasan dans le forum Langage
    Réponses: 8
    Dernier message: 17/09/2007, 11h29
  3. comment faire une sauvegarde sous
    Par biboulou dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 22h01
  4. [iReport] Comment faire une ligne "sous-détails"
    Par cho7 dans le forum iReport
    Réponses: 1
    Dernier message: 23/06/2006, 15h32
  5. [HTML] Comment faire une arborescence en html
    Par jehlg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/02/2006, 23h55

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