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 :

Spinner : associer un numéro aux sélections


Sujet :

Composants graphiques Android

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 144
    Points : 118
    Points
    118
    Par défaut Spinner : associer un numéro aux sélections
    Bonjour,

    Je développe depuis un petit temps sur Android et je suis aujourd'hui confronté à un petit problème.

    En résumé, il y a plusieurs listes déroulante (Spinner) sur ma vue et jusqu'à maintenant, elles étaient remplis avec un tableau de String.
    Aujourd'hui, j'ai avancé dans la conception de mon application et je souhaiterais faire quelques changements.

    En effet, les informations qui doivent figurer dans ces listes sont issus de mes bases SQLite.
    Le problème, c'est qu'il faudrait que je puisse afficher les noms dans la liste, tout en obtenant l'id correspondant à la base SQLite.


    Par exemple, imaginons que ma table soit :

    departement_id | departement_ nom
    ------------------------------------------
    1 | truc
    42 | machin
    103 | chose


    Il faudrait que la liste déroulante affiche les noms uniquement :
    > truc
    > machin
    > chose

    Et que lorsque l'utilisateur sélectionne un champ, je puisse obtenir le numéro correspond pour pouvoir traiter les infos avec d'autres tables SQLite.
    (Il peut y avoir des doublons dans les noms, alors que l'id est unique, c'est donc nécessaire).


    Je peux facilement obtenir un tableau de String avec tous les noms de ma table SQLite, mais je ne vois pas comment associer chaque nom à un id.
    Pouvez-vous m'aider ?



    Actuellement, le bout de code pour associer un tableau de String à la liste est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    final DepartmentBDD departmentLite = new DepartmentBDD(this);
    departmentLite.open();
     
    // Récupération du tableau
    String[] tabDep = departmentLite.getAllString();
     
    // Référence sur la liste déroulante
    final Spinner listeDep = (Spinner)findViewById(R.id.listeDepartement);
     
    // Affectation du tableau à la liste déroulante
    ArrayAdapter adDep = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, tabDep);
    listeDep.setAdapter(adDep);

    Merci d'avance.

  2. #2
    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
    Je te dirai de t'intéresser à la classe CursorAdapter et à sa fille SimpleCursorAdapter.

    Je pense que ça devrait répondre à ton besoin.
    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

  3. #3
    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 c'est en base de donnée, c'est clairement la méthode à utiliser (CursorAdapter).

    Sinon, dans tous les cas, il y a une notion en Java que tout le monde a tendance d'oublier, les POJOs (Plain Old Java Objects). C'est las base des "beans":
    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 Departement
    {
          int    code;
          String name;
     
          public void setCode(int c) { this.code = c; }
          public void setName(String n) { this.name = n; }
          public int getCode() { return this.code; }
          public String getName() { return this.name; }
     
          public boolean equalsTo(Object o) {
             if (o == null) return false;
             if (! o instanceof Department) return false;
             return ((Departement)o).code == this.code;
          }
          public int hashCode() {
             return this.code;
          }
          public String toString() {
             return this.name;
          }
    }
    Et voila, un POJO complet (avec hashcode pour utilisation comme clé dans les HashMap, ou tri rapide, equalsTo et surtout: "toString()". C'est aussi un Bean, mais je ne suis pas sur à 100% que Android inclut les bean-utils...

    Avec ce code là, tu peux transformer une row de ta DB en Departement (c'est le principe de nombreaux frameworks de serialization, comme Hibernate), mais surtout, les utiliser dans un ArrayAdapter... le getItem(int) va renvoyer un objet de type Departement, et la list-view va utiliser par défaut la fonction "toString()" pour afficher l'objet (donc le nom seulement).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 144
    Points : 118
    Points
    118
    Par défaut
    Merci pour vos réponses (et désolé pour mon retard).

    J'ai tenté une autre solution qu'on ma conseillé, et ça fonctionne.
    Je jetterais tout de même un coup d'oeil avec les vôtres,.

  5. #5
    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
    Il serait intéressant que tu donnes cette solution (pas tout le code hein, juste l'explication claire de celle-ci ).
    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

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 144
    Points : 118
    Points
    118
    Par défaut
    En fait, la solution utilisé ressemble assez à celle de nicroman, mais sur le coup, quand j'ai lu "POJOs", je voyais ça différemment.

    --------

    Je reviens avec une petite question du coup.
    Je voulais faire quelque chose de similaire, mais sur un AutoCompleteTextView.
    En parcourant toutes les méthodes liées à cette classe, je n'ai pas vu de "getItem" ou autre chose de similaire.
    La seule méthode pour récupérer un contenu, c'est getText mais ça ne renvoie donc que le "toString()" de mon objet, impossible de le reconstruire pour récupérer un id.

    Du coup, je me demande si c'est possible de faire ça sur un AutoCompleteTextView ?

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

Discussions similaires

  1. Associations d'aide aux log. libres/linux en France
    Par narmataru dans le forum Linux
    Réponses: 17
    Dernier message: 18/11/2014, 23h00
  2. associer des variables aux controls du Ribbon bar
    Par subzero01 dans le forum MFC
    Réponses: 3
    Dernier message: 07/02/2010, 18h17
  3. [VB.NET] Associer une clé aux éléments d'une combo
    Par Cereal123 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 30/03/2009, 14h52
  4. Réponses: 5
    Dernier message: 05/09/2008, 17h17
  5. Association des programmes aux fichiers: icônes
    Par jamesb dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/01/2005, 19h17

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