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 :

Comment créer une ListView multi niveaux


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut Comment créer une ListView multi niveaux
    Bonjour à tous,

    J'aimerai savoir comment je dois faire pour créer une listview avec n sous niveau.
    Je m'explique je reçois des informations du serveur sous forme JSON, et ces informations me sont utile pour créer le menu sur android à l'aide d'une listview.
    Le hic c'est que si je ne connais pas à l'avance le nombre de sous menu qu'il y aura.
    Si c'est juste à double niveau il me suffirait de créer une nouvelle activité et de recréer une seconde listview pour afficher la sous catégorie, mais si il y a plus de 2, disons 4 dois je créer 4 activity et créer 4 listview dans chacune des activité?

    Comment dois je faire pour créer une listview à plusieurs niveau de façon dynamique ?

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Salut

    Pour cela il existe un Widget dans Android :
    http://developer.android.com/referen...eListView.html

    Un tutoriel sur le sujet :
    http://blog.ace-art.fr/2011/10/07/tu...pandable-list/

    Pour avoir n Niveaux il te suffira dans les childView de recréer une nouvelle List ou ListView .

    Bonne vacances.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Ah super! Je vais essayer ce widget.
    Juste une petite question pour ma culture: comment fait l'application Ebay au même titre que l'application amazon pour naviguer de listview en listview?

    puisque si vous l'avez déjà testé, vous pourrez voir que l'application n'utilise pas de widget ExpandableListView; juste une listview qui amène sur une autre ainsi de suite....

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    C'est un clic sur un item de la listview te lance une nouvelle activité. C'est simplement l'animation entre ces deux activités qui te donne l'impression que tu navigue de listview en listview.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Oui je comprend bien et d'ailleur c'est également ma crainte. Je vais vous illustrer cela sous forme d'image:


    Si vous regarder bien il y a 4 sous niveau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    -Vêtement
     -accessoires
      -Déguisements
       -costumes
        -Déguisements
    Ce que je veux savoir, c'est faut il créer autant d'activité que de nombre de listView?
    Dans l'exemple il y a 5 listview.

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Dans la logique de programmation je te dirais non puisque c'est jsute les données qui change.

    Par contre j'avoue ne pas avoir d'idée sur la manière de l'implémenter pour conserver une navigation "classique" avec gestion des retours.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Est ce que quelqu'un aurait une idée svp?

  8. #8
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Seules les données changent.

    Coté implémentation, c'est une classe avec un Adapter custom (je pense) sous doute nourri avec une Interface ou une classe abstraite.
    Chaque niveau crée un nouveau Fragment/une nouvelle Activité de la même classe avec les nouvelles données et l'affichent ensuite.

    Concernant le fil d'Arianne, ce n'est pas très dur à gérer. Dans le cas d'utilisation d'Activité, il suffit de rajouter à la suite. L'instance locale du fil ne changeant pas, il n'est pas nécessaire de le mettre à jour en cas de retour.
    Dans le cas des Fragments, il faut rajouter à la suite en allant plus loin et enlever le nom de la section courante + le séparateur en revenant en arrière.

    Pour moi : une ListView, un Adapter custom étendant BaseAdapter (ou CursorAdapter), implémentant peut-être un Loader, couplé avec une Interface définissant les produits.

    REMARQUE : je ne connais pas du tout ces applications. Je ne me base que sur le screenshots et le détail de ce sujet.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Daccord , si j'ai bien compris il faut utiliser un fragment pour mettre a jour les données dans la listview actuelle?

  10. #10
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Dans mon idée, tu ne mets pas à jour. Tu crées un nouveau fragment remplaçant le précédent et présentant les données que tu désirs.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    hmm peux ton instancier le meme fragment plusieurs fois?

  12. #12
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    hmm peux ton instancier le meme fragment plusieurs fois?
    Oui bien sûr cela est possible.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Oui bien sûr cela est possible.
    Et je rajouterai même que c'est dans ce but que les Fragments ont été introduits : Réutilisation d'éléments complexes.

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Bonsoir,
    Merci à vous tous pour vos réponses!

    J'aimerai savoir pour remplacer l'ancien fragment,
    est ce que je dois passer par ce bout de code?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MyFragment myFragment = new MyFragment();
            fragmentTransaction.add(R.id.myfragment, myFragment);
            fragmentTransaction.commit();

  15. #15
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    C'est presque cela mais avec la méthode replace et non add
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  16. #16
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Alors en résumé pour arriver àmon but:
    Je doit créer un listFragment et puis à chaque niveau je met à jour l'ancien fragment par un nouveau avec les nouvelles données?

    Est ce que ce lien avec un exemple pourrait m'être utile?
    http://developer.android.com/trainin...unicating.html

  17. #17
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Yep c'est un bon exemple par contre méfie toi cet exemple marche que pour le fonctionnement descendant et non ascendant.

    Par contre si tu veux garder l'historique des fragment pour revenir à la vue précédente c'est un add et non replace.

    Méfie toi le passage d'info d'un fragment vers un autre et plus compliqué dans le sens inverse.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  18. #18
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Sauf erreur de ma part, il me semble qu'il faut simplement utiliser la fonction addToBackStack(null); de l'objet FragmentTransaction pour revenir en arrière et avoir mon historique de navigation?

  19. #19
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Sauf erreur de ma part, il me semble qu'il faut simplement utiliser la fonction addToBackStack(null); de l'objet FragmentTransaction pour revenir en arrière et avoir mon historique de navigation?
    Yep ca garde les transitions avec un tag en paramètres , mais tu peux le gérer avec les add aussi.

    Un lien vers une question sur le sujet :
    http://stackoverflow.com/questions/1...d-detach-and-r
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

Discussions similaires

  1. Comment créer une GridView à partir d'une ListView ?
    Par xXO--Hades--OXx dans le forum Composants graphiques
    Réponses: 52
    Dernier message: 09/12/2010, 10h49
  2. comment créer une image sous forme d'eclipse(ronde)
    Par unix27 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/05/2005, 22h16
  3. Réponses: 1
    Dernier message: 04/05/2005, 11h43
  4. [débutant] Comment créer une base ?
    Par laffreuxthomas dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 14/12/2004, 22h12
  5. Comment créer une Table dans 1 Bdd ACCESS avec Builder??
    Par makandja dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/03/2004, 20h21

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