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 :

Charger 2 champs d'une BDD dans un ListView


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2002
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2002
    Messages : 203
    Par défaut Charger 2 champs d'une BDD dans un ListView
    Bonjour,

    J'ai pas trop l'habitude du java, encore moins de la programmation sous android

    Je voudrais charger le contenu de 2 champs d'un SELECT dans un listview avec Nom en premier, et un petit commentaire dessous.
    Lorsque je teste mon projet, je tombe sur les résultats suivants:
    <nom du package>.Menu@<hash>
    Mais ca correspond bien au nombre d'élements de mon SELECT (c'est déja pas mal)

    Voici mon code:

    Ma class DAO
    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
    37
    38
    39
    40
    41
     
    import java.util.ArrayList;
    import java.util.List;
     
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
     
    public class MenuBDD {
     
        private SQLiteDatabase bdd;
        private MaDatabase MaBaseSQLite;
     
        private String[] allColumnsMenu = { MaDatabase.COLUMN_MENU_NOMMENU,
                MaDatabase.COLUMN_MENU_COMMENU };
     
        public MenuBDD(Context context){
            //Création de la bdd
            MaBaseSQLite = new MaDatabase(context);
        }
    ...
       public List<Menu> getAllMenu(int num_menu) {
            List<Menu> menus = new ArrayList<Menu>();
     
            Cursor cursor = bdd.query(MaDatabase.TABLE_MENU,allColumnsMenu,MaDatabase.COLUMN_MENU_NUMMENU + " = " + num_menu,null, null, null, null);
            cursor.moveToFirst();
            while (!cursor.isAfterLast()){
                Menu menu = cursorToMenu(cursor);
                menus.add(menu);
                cursor.moveToNext();
            }
            cursor.close();
            return menus;
        }
     
        private Menu cursorToMenu(Cursor cursor){
            Menu menu = new Menu();
            menu.SetNom_menu(cursor.getString(0));
            menu.SetCom_menu(cursor.getString(1));
            return menu;
        }
    Ma class
    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
    37
    38
    39
    40
    41
    42
     
    public class Menu {
     
        private int id_menu;
        private int num_menu;
        private String nom_menu;
        private String com_menu;
        private String icone_menu;
     
        public Menu(){}
     
        public Menu(int id_menu,int num_menu, String nom_menu, String com_menu, String icone_menu){
            this.id_menu = id_menu;
            this.num_menu = num_menu;
            this.nom_menu = nom_menu;
            this.com_menu = com_menu;
            this.icone_menu = icone_menu;
        }
     
        public int GetId() {
            return id_menu;
        }
     
        public void SetId(int id_menu){
            this.id_menu = id_menu;
        }
    ...
        public String GetNom_menu(){
            return nom_menu;
        }
     
        public void SetNom_menu(String nom_menu){
            this.nom_menu = nom_menu;
        }
     
        public String GetCom_menu(){
            return com_menu;
        }
     
        public void SetCom_menu(String com_menu){
            this.com_menu = com_menu;
        }
    Et enfin ma méthode principale de chargement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
        private void RefreshMenu(int num_menu){
     
            List<Menu> values = datasource.getAllMenu(num_menu);
     
            ArrayAdapter<Menu> adapter = new ArrayAdapter<Menu>(this,android.R.layout.simple_list_item_1, values);
            setListAdapter(adapter);
     
        }
    J'ai du mal a voir ou se situe le problème, j'ai essayé de modifier le DAO pour n'afficher qu'une colonne, mais le résultat est le même.

    Pourriez vous m'aider ?

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2002
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2002
    Messages : 203
    Par défaut
    Bonjour,

    Apparement, pour mon cas, il faut faire une autre activité permettant de définir une custom listview ou j'afficherai le contenu d'une cellulle.
    Je vais donc continuer mes recherche sur ce coté la.

    Par contre, existe t'il un équivalent a vardump pour afficher le contenu d'une variable (meme si c'est un array) pour que je sois sur que mon select est correct ?

    Merci

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2002
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2002
    Messages : 203
    Par défaut
    C'est bien ce que je pensais.
    Insérer des valeurs issue d'une ressource string dans une table, ca marche pas tres bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.execSQL(INSERT_MENU + "1, '" +  R.string.menu101 + "','Commentaire','ico1');");
    Quelqu'un sait si c'est faisable ?

    Je voudrais conserver cette méthode pour profiter du multilingue des ressources string.

  4. #4
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Resource.getString()


    Sinon, pourquoi ne pas utiliser "insert" au lieu de execSQL (qui peut faire le café, mais du coup ne donne parfois pas l'heure )

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2002
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2002
    Messages : 203
    Par défaut
    Bonjour, et merci pour votre réponce.

    J'utilise execSQL par confort (je suis DBA, et donc plus a l'aise avec des requetes SQL plutot qu'en manipulant des objets, de plus, j'ai beaucoup de lignes a initialiser.

    Concernant le Resource.getString(), je n'arrive pas a l'utiliser.

    la requete d'insert se trouve dans une classe (public class MaDatabase extends SQLiteOpenHelper )
    c'est la ou est mon constructeur de database.

    J'ai essayé d'utilise Resources.getSystem().getString(R.string.menu101), mais il ne trouve pas la valeur, et me renvois une erreur.

    Auriez vous une autre idée ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2002
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2002
    Messages : 203
    Par défaut
    Au final, j'ai trouvé une méthode. pas idéale, mais ca fonctionne:

    Lors du chargement des données, j'insert directement le R.string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.execSQL(INSERT_MENU + "2, '" + R.string.menu204 + "','" + R.string.menucom204 + "',NULL);");
    Ainsi, je stoque l'identifiant du string en base.
    Et lorsque je veux l'afficher, j'utilise le Context:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mContext.getResources().getString(Integer.valueof(<VARIABLE>)

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

Discussions similaires

  1. Charger une JComboBox ou une JList des données d'un champ d'une table dans une BDD.
    Par MasterMbg dans le forum Codes sources à télécharger
    Réponses: 2
    Dernier message: 27/09/2013, 12h16
  2. Réponses: 5
    Dernier message: 13/05/2010, 17h20
  3. Réponses: 1
    Dernier message: 17/04/2009, 17h17
  4. [SQL] Compteur de saisies dans des champs d'une BDD
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 28/02/2007, 13h54
  5. Réponses: 2
    Dernier message: 19/02/2007, 13h02

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