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 :

Afficher les données d'une Base de données dans une ListView


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut Afficher les données d'une Base de données dans une ListView
    Bonsoir,
    J'ai programmé une base de données Sqlite, elle fonctionne.
    Malgré des soirées de recherches je n'arrive pas à afficher
    mes données dans une ListView.

    Ma Bdd fonctionne avec affichage des données dans un toast.

    Voici mon code avec aucune erreur à la compilation et au lancement,
    hélas aucun affichage dans mon ListView.

    Fichier Affichage1.java
    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
    43
    44
    45
    46
    47
    48
    49
    50
    package com.example.rapidego.frigo1;
     
    /**
     * Created by rapidego on 16/06/2015.
     */
    public class Viandes
    {
        //declare les variables
        private  int id;
        private String type;
        private String etat;
        private String nombre;
        private String endroit;
     
        //constructeur vide
        public Viandes(){}
     
        //constructeur rempli
        public Viandes(String type, String etat,  String nombre, String endroit)
        {
            this.type = type;
            this.etat = etat;
            this.nombre = nombre;
            this.endroit = endroit;
     
     
        }
     
        //les différents getter et setter
        public int getId() {return id;}
        public void setId(int id) {this.id = id;}
     
        public String getType() {return type;}
        public void setType(String type) {this.type = type;}
     
        public String getEtat() {return etat;}
        public void  setEtat(String etat) {this.etat = etat;}
     
        public String getNombre() {return nombre;}
        public void setNombre(String nombre) {this.nombre = nombre;}
     
        public String getEndroit() {return  endroit;}
        public void setEndroit(String endroit) {this.endroit = endroit;}
     
        public String toString()
        {
            return "ID :" + id + "\nTYPE :" + type + "\nENDROIT :" + endroit +
                    "\nETAT :" + etat + "\nNOMBRE :" + nombre;
        }
    }
    Mon fichier MainActivity.java
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    package com.example.rapidego.frigo1;
     
    import android.content.Intent;
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
     
    public class MainActivity extends ActionBarActivity
    {
     
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
     
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
     
            //*******************code listeView******************************************
            // on cree un tableau de dnnees pour les items de la liste<view
           String[] lesItems =
                    {
                            "Afficher toutes les viandes",
                            "Ajouter une viande",
                            "Modifier une ligne de viande",
                            "Initialisation de la base"
                    };
            //Creation de l'adapter
            ArrayAdapter <String> adapter =new ArrayAdapter<String>
                    (this, android.R.layout.simple_list_item_1, lesItems);
     
            //recuperation du listview present dans notre IHM
            ListView listCommande = (ListView) findViewById(R.id.Laliste);
     
            // on passe nos donnees au composantListView
            listCommande.setAdapter(adapter);
     
            listCommande.setOnItemClickListener(new AdapterView.OnItemClickListener()
            {
                Intent intent = null;
                    public void onItemClick(AdapterView <?> parent, View view, int position, long id)
                    {
                        switch (position)
                        {
                            case 0:
                                intent = new Intent(getBaseContext(), Affichage1.class);
                                break;
                            case 1:
                                intent = new Intent(getBaseContext(), Affichage1.class);
                                break;
                            case 2:
                                intent = new Intent(getBaseContext(), Affichage1.class);
                                break;
                            case 3:
                                intent = new Intent(getBaseContext(), Affichage1.class);
                                break;
                        }
     
                        //pour eviter le if on peut faire un return sur default du switch
                        if (intent != null) startActivity(intent);
                    }
            });//fin de la methode onItemClick
     
       }   // fin de methode onCreate
     
    //**********************************partie menu***************************************
        @Override
        public boolean onCreateOptionsMenu(Menu menu)
        {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
     
        @Override
        public boolean onOptionsItemSelected(MenuItem item)
        {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
     
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings)
            {
                return true;
            }
     
            return super.onOptionsItemSelected(item);
        }
    }
    Monfichier MaBaseSqlite.java
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    package com.example.rapidego.frigo1;
     
    /**
     * Created by rapidego on 16/06/2015.
     */
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
     
    public class MaBaseSQLite extends SQLiteOpenHelper
    {
     
        //variable table
        private static final String TABLE_VIANDES = " table_viandes ";
     
        //variables des colonnes
        public static final String COL_ID = "ID";
        public static final String COL_TYPE = "TYPE";
        public static final String COL_ETAT = "ETAT";
        public static final String COL_COMBIEN = "COMBIEN";
        public static final String COL_ENDROIT = "ENDROIT";
     
     
        //variable de la requete ecrite
        private static final String CREATE_BDD = " CREATE TABLE " + TABLE_VIANDES + " ( " +
                COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_TYPE + " TEXT NOT NULL, "
                + COL_ETAT + " TEXT NOT NULL, " + COL_COMBIEN + " TEXT NOT NULL, " + COL_ENDROIT +
                " TEXT NOT NULL) ; " ;
     
        //constructeur
        public MaBaseSQLite(Context context, String name, CursorFactory factory, int version)
        {
            super(context, name, factory, version);
        }
     
     
     
        @Override
        public void onCreate(SQLiteDatabase db) //paremetre db (objet db)
        {
            // on cree la table a partir de la requete ecrite dans la variable CREATE_BDD
            db.execSQL(CREATE_BDD);
        }
     
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
            //On peut faire ce que l'on veut ici
            //je choisi de supprimper la table et de la recreer
     
            // comme cela lorsque je change la version les id repartent de zero
     
            //suppression
            db.execSQL("DROP TABLE" + TABLE_VIANDES + ";");
     
            //recreer la table
            onCreate(db);
     
        }
     
    }
    Monfichier GestionBDD.java
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    package com.example.rapidego.frigo1;
     
    /**
     * Created by rapidego on 16/06/2015.
     */
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.widget.ArrayAdapter;
    import android.widget.ListAdapter;
    import android.widget.ListView;
    import java.util.ArrayList;
     
     
     
    public class GestionBDD
    {
        //variables
        private static final int VERSION_BDD = 1;
        private static final String NOM_BDD = "viandes.db";
     
        private static final String TABLE_VIANDES = "table_viandes";
     
        private static final String COL_ID = "ID";
        private static final int NUM_COL_ID = 0;
        private static final String COL_TYPE = "TYPE";
        private static final int NUM_COL_TYPE = 1;
        private static final String COL_ETAT = "ETAT";
        private static final int NUM_COL_ETAT = 2;
        private static final String COL_COMBIEN = "COMBIEN";
        private static final int NUM_COL_COMBIEN = 3;
        private static final String COL_ENDROIT = "ENDROIT";
        private static final int NUM_COL_ENDROIT = 4;
     
        private SQLiteDatabase bdd; // Declare objet bdd
        private MaBaseSQLite maBaseSQLite; // Declare objet maBaseSQLite
     
        //Constructeur rempli
        public GestionBDD(Affichage1 context)
        {
            //on cree la BDD et sa table
            maBaseSQLite = new MaBaseSQLite(context, NOM_BDD, null, VERSION_BDD);
        }
     
        public GestionBDD()
        {
     
        }
     
        public void open()
        {
            //on ouvre la bdd en ecriture
            bdd = maBaseSQLite.getWritableDatabase();
        }
     
        public void close()
        {
            //on ferme l'acces a la bdd
            bdd.close();
        }
     
        public SQLiteDatabase getBdd()
        {
            return  bdd;
        }
     
        public long insertViandes(Viandes viandes)
        {
            //creation d'un ContentValues (fonctionne comme une HashMap
            ContentValues values = new ContentValues();
            //On lui ajoute une valeur associee a une clef (qui est le nom de la colonne
            //dans laquelle on veut mettre la valeur.
     
            values.put(COL_TYPE, viandes.getType());
            values.put(COL_ETAT, viandes.getEtat());
            values.put(COL_COMBIEN, viandes.getNombre());
            values.put(COL_ENDROIT, viandes.getEndroit());
     
            //On insere l'objet dans la BDD via le ContentValues
            return bdd.insert(TABLE_VIANDES, null, values);
        }
     
        public int upDateViandes(int id, Viandes viandes)
        {
            // la mise a jour de la viande dans la BDD fonctionne plus ou moins
            //comme une insertion
            // Il faut simplement preciser quelle viande il faut mettre a jour
            // grace a l'ID
     
            ContentValues values = new ContentValues();
            values.put(COL_TYPE, viandes.getType());
            values.put(COL_ETAT, viandes.getEtat());
            values.put(COL_COMBIEN, viandes.getNombre());
            values.put(COL_ENDROIT, viandes.getEndroit());
            return bdd.update(TABLE_VIANDES, values, COL_ID + " = " + id, null);
        }
     
        public int removeViandesWithdID(int id)
        {
            //suppression d'une viande de la BDD grace a l'ID
            return bdd.delete(TABLE_VIANDES, COL_ID + " = " + id, null);
        }
     
        public Viandes getViandesWithTitre(String titre)
        {
            //Recupere dans un cursor les valeurs correspondant à une viandes contenu
            // dans la BDD (ici on selectionne la viande grace a son titre)
            Cursor c = bdd.query(TABLE_VIANDES, new String[]{COL_ID, COL_TYPE, COL_ETAT,
                            COL_COMBIEN, COL_ENDROIT}, COL_TYPE + " LIKE\"" + titre + "\"", null, null,
                    null, null);
            return  cursorToViandes(c);
     
        }
     
        //Cette methode permet de convertir un cursor en une viande
        public Viandes cursorToViandes(Cursor c)
        {
            //Si aucun element n'a ete trouve dans la requete, on renvoie null.
            if (c.getCount() == 0)
                return null;
     
            //Sinon on se place sur le premier element
            c.moveToFirst();
            //On cree  une viande
            Viandes viandes = new Viandes();
     
            //On lui affecte toutes les infos grace aux infos contenues dans le Cursor
            viandes.setId(c.getInt(NUM_COL_ID));
            viandes.setType(c.getString(NUM_COL_TYPE));
            viandes.setEtat(c.getString(NUM_COL_ETAT));
            viandes.setNombre(c.getString(NUM_COL_COMBIEN));
            viandes.setEndroit(c.getString(NUM_COL_ENDROIT));
     
            //On ferme le Cursor
            c.close();
     
            //On retourne la viande
            return viandes;
     
        }
     
     
        //*************méthode suivant aide Evury*******************************
     
        public ArrayList<String> getViandesList()
        {
            String titre = null;
            //Recupere dans un cursor les valeurs correspondant à une viandes contenu dans la BDD
            Cursor c = bdd.query(TABLE_VIANDES, new String[]{COL_ID, COL_TYPE, COL_ETAT,
                            COL_COMBIEN, COL_ENDROIT}, COL_TYPE + " LIKE\"" + titre + "\"", null, null,
                            null, null);
     
           ArrayList<String> list = new ArrayList<String>();
            //On lui affecte toutes les infos grace aux infos contenues dans le Cursor
            list.add(c.getString(NUM_COL_TYPE));
            list.add(c.getString(NUM_COL_ETAT));
            list.add(c.getString(NUM_COL_COMBIEN));
            list.add(c.getString(NUM_COL_ENDROIT));
     
            return list;
        }
    Mon fichier Affichage1.java
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    package com.example.rapidego.frigo1;
     
    import android.database.Cursor;
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
    import java.util.ArrayList;
     
    public class Affichage1 extends ActionBarActivity
    {
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_affichage1);
     
            //Creation d'une instance de la classe GestionBDD(creer la Bdd)
            GestionBDD bddViandes = new GestionBDD(this);
     
            //On ouvre la base de donnees
            bddViandes.open();
     
            //Creation d'une ligne pour une viande
            Viandes decoupe = new Viandes("boeuf", "cote", "4", "BG");
     
            // insertion d'une viande
            bddViandes.insertViandes(decoupe);
            //Si une decoupe est retournee (donc si la decoupe a bien ete ajoutee a la Bdd
            //ici on affiche les infos de la decoupe dans un toast
           Viandes decoupePourBdd = bddViandes.getViandesWithTitre(decoupe.getType());
     
            if (decoupePourBdd != null)
            {
                Toast.makeText(this, decoupePourBdd.toString(), Toast.LENGTH_LONG).show();
            }
     
            //recuperation du listview present dans notre IHM
            ListView lv = (ListView) findViewById(R.id.Afficheliste);
     
            bddViandes.getViandesList();
     
           //**********************suivant internet (livre)**********************
            //création de la liste des tâches
            final ArrayList <String> todoItems = new ArrayList<String>();
     
            //création de l'ArrayAdapter pour lier l'ArrayList à la ListView
            final ArrayAdapter <String> list;
     
            list = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, todoItems);
     
            // Liaison de l'ArrayAdapter à la ListView
            lv.setAdapter(list);
     
     
     
        }   //*****************fin de la méthode onCreate*************************************
     
     
     
     
        //********************************partie menu*****************************
        @Override
        public boolean onCreateOptionsMenu(Menu menu)
        {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_affichage1, menu);
            return true;
        }
     
        @Override
        public boolean onOptionsItemSelected(MenuItem item)
        {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
     
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings)
            {
                return true;
            }
     
            return super.onOptionsItemSelected(item);
        }
    }
    Qui pourrait bien m'aider pour résoudre mon problème de ListView avec Bdd.

    Jusqu'à maintenant j'ai tout fait seul mais cette fois je n'arrive pas !
    Toutes les docs consultées sont différentes et pas proche de mon cas.

    Merci pour toute aide
    Cordialement rapidego

  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
    Au niveau de ta classe Affichage1 (change de nom s'il te plaît, que celui-ci soit parlant, c'est plus facile de s'y retrouver pour tout le monde ^^), tu recherches la ListView, tu requêtes ta BDD en laissant son résultat dans le vide (ligne 44 de l'extrait forum), puis tu pars sur un exemple internet qui comporte une liste vide d'élément, que tu donnes à l'Adapter, et tu fournis enfin ce dernier à la ListView.

    Je pense que tu devrais essayer de comprendre ce que tu fais, et non recopier des bouts de code épars. Tu es néanmoins sur le bon chemin

    Lis la documentation de l'Adapter.
    Tu dois le peupler avec tes items, et ensuite le fournir à ta ListView.
    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
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par Hizin Voir le message
    Au niveau de ta classe Affichage1 (change de nom s'il te plaît, que celui-ci soit parlant, c'est plus facile de s'y retrouver pour tout le monde ^^), tu recherches la ListView, tu requêtes ta BDD en laissant son résultat dans le vide (ligne 44 de l'extrait forum), puis tu pars sur un exemple internet qui comporte une liste vide d'élément, que tu donnes à l'Adapter, et tu fournis enfin ce dernier à la ListView.

    Je pense que tu devrais essayer de comprendre ce que tu fais, et non recopier des bouts de code épars. Tu es néanmoins sur le bon chemin

    Lis la documentation de l'Adapter.
    Tu dois le peupler avec tes items, et ensuite le fournir à ta ListView.
    Bonsoir,
    Merci de m'avoir répondu, je comprends fort bien tes remarques
    et je vais essayer de suivre tes conseils.
    Pourrait tu me conseiller un livre qui traite de ce point sur lequel je bute.
    ou une documentation adéquate.

    S'il te plaît la fonction suivante est-elle juste?
    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
     public ArrayList<String> getViandesList()
        {
            String titre = null;
            //Recupere dans un cursor les valeurs correspondant à une viande contenue dans la BDD
            Cursor c = bdd.query(TABLE_VIANDES, new String[]{COL_ID, COL_TYPE, COL_ETAT,
                            COL_COMBIEN, COL_ENDROIT}, COL_TYPE + " LIKE\"" + titre + "\"", null, null,
                            null, null);
     
           ArrayList<String> list = new ArrayList<String>();
            //On lui affecte toutes les infos grace aux infos contenues dans le Cursor
            list.add(c.getString(NUM_COL_TYPE));
            list.add(c.getString(NUM_COL_ETAT));
            list.add(c.getString(NUM_COL_COMBIEN));
            list.add(c.getString(NUM_COL_ENDROIT));
     
            return list;
        }
    A plus rapidego

  4. #4
    Membre actif Avatar de jmonga
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2014
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 175
    Points : 269
    Points
    269
    Par défaut
    Ton code ne compile pas?
    Jonathan Monga

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par jmonga Voir le message
    Ton code ne compile pas?
    Bonjour
    Si il compile sans erreur et m'affiche une ligne de donnée dans un toast.
    Mon objectif c'est réussir un affichage de plusieurs lignes dans une ListView.
    C'est là mon problème
    cordialement

  6. #6
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Citation Envoyé par Rapidego Voir le message
    S'il te plaît la fonction suivante est-elle juste?
    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
     public ArrayList<String> getViandesList()
        {
            String titre = null;
            //Recupere dans un cursor les valeurs correspondant à une viande contenue dans la BDD
            Cursor c = bdd.query(TABLE_VIANDES, new String[]{COL_ID, COL_TYPE, COL_ETAT,
                            COL_COMBIEN, COL_ENDROIT}, COL_TYPE + " LIKE\"" + titre + "\"", null, null,
                            null, null);
     
           ArrayList<String> list = new ArrayList<String>();
            //On lui affecte toutes les infos grace aux infos contenues dans le Cursor
            list.add(c.getString(NUM_COL_TYPE));
            list.add(c.getString(NUM_COL_ETAT));
            list.add(c.getString(NUM_COL_COMBIEN));
            list.add(c.getString(NUM_COL_ENDROIT));
     
            return list;
        }
    Ce n'est pas logique : ton curseur va contenir plusieurs lignes, donc ce qu'il faut, c'est renvoyer une ArrayList<Viande>, pas ArrayList<String>. Ceci suppose évidemment d'avoir créé une classe Viande. Quoiqu'il en soit, c'est pour éviter ce travail fastidieux qu'il existe spécifiquement les CursorAdapter.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Ce n'est pas logique : ton curseur va contenir plusieurs lignes, donc ce qu'il faut, c'est renvoyer une ArrayList<Viande>, pas ArrayList<String>. Ceci suppose évidemment d'avoir créé une classe Viande. Quoiqu'il en soit, c'est pour éviter ce travail fastidieux qu'il existe spécifiquement les CursorAdapter.
    Bonjour

    Merci pour ton aide, je vais m'orienter suivant tes conseils concernant le CursorAdapter.

    Je ne suis pas programmeur mais un retraité
    qui est passionné par la programmation.

    Le langage java me plait bien et là j'essaye android.

    C'est un essai pour le moment, j'essaye de gérer mon congélateur avec mon Smart Phone.

    Je te serai reconnaissant de bien vouloir m'indiquer une doc ou un livre en français concernant le CursorAdapter .

    A plus Merci

  8. #8
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Bonjour,

    Il existe de nombreux tutos en français sur l'utilisation d'un CursorAdapter : cliques ici

    Si tu débutes sous Android, je te conseille la lecture attentive de mon cours afin d'avoir une vue d'ensemble. Ensuite seulement, les tutos te guideront dans les détails.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Bonjour,

    Il existe de nombreux tutos en français sur l'utilisation d'un CursorAdapter : cliques ici

    Si tu débutes sous Android, je te conseille la lecture attentive de mon cours afin d'avoir une vue d'ensemble. Ensuite seulement, les tutos te guideront dans les détails.
    Bonsoir,

    Félicitations pour ton travail!

    J'essaye avec SimpleCursorAdapteret j'ai une erreur comme suit:
    Cannot resolve constructor SimpleCursorAdapter

    je ne vois pas où ajouter le constructeur ?

    Dans la licne suivante:
    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, produit);

    Voici mon code:

    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
    public class Affichage1 extends ActionBarActivity {
     
        public Affichage1() {
        }
     
        @Override
        public String toString() {
            return "Affichage1{}";
        }
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
     
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_affichage1);
     
            //Creation d'une instance de la classe GestionBDD(creer la Bdd)
            GestionBDD bddViandes = new GestionBDD(this);
     
            //On ouvre la base de donnees
            bddViandes.open();
     
            //Creation d'une ligne pour une viande
            Viandes decoupe = new Viandes(" boeuf", "cote", "4", "BG");
     
            // insertion d'une viande
            bddViandes.insertViandes(decoupe);
     
            //Appel méthode contenant les valeurs du Cursor
            Cursor produit = bddViandes.getViandesWithTitre();
     
            //recuperation du listview present dans mon IHM
            ListView lv = (ListView) findViewById(R.id.Afficheliste);
     
            SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, produit);
     
            lv.setAdapter(adapter);
     
        }   //*****************fin de la méthode onCreate*************************************
    merci de bien vouloir m'aider

    cordialement

  10. #10
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Dans la documentation, on voit que le constructeur nécessite plus de choses que ce que tu lui donnes actuellement :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags)
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Dans la documentation, on voit que le constructeur nécessite plus de choses que ce que tu lui donnes actuellement :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags)
    Bonsoir,

    Décidément je n'y arrive pas à résoudre ce problème d'affichage avec le
    simpleCursorAdapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1 );
    ceci est souligné en rouge : this, android.R.layout.simple_list_item_1
    j'ai lu les docs et tout essayé!

    C'est navrant j'ai une Bdd qui fonctionne et je n'arrive pas à afficher!

    a ++++ rapidego , mon pseudo est mal choisi!!!!!

  12. #12
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
            android.R.layout.simple_list_item_1, 
            produit, 
            new String[] { "type" }, 
            new int[] { android.R.id.text1 });
     
    ListView listView = (ListView) findViewById(R.id.list);
    listView.setAdapter(adapter);
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
            android.R.layout.simple_list_item_1, 
            produit, 
            new String[] { "type" }, 
            new int[] { android.R.id.text1 });
     
    ListView listView = (ListView) findViewById(R.id.list);
    listView.setAdapter(adapter);
    Bonsoir,
    Merci de m'avoir épaulé il n'y a plus aucune erreur à la compilation.

    Mais lorsque je lance l'application elle plante dès que j'appelle l'activité Affichage1, fenêtre
    qui devrait afficher mes données.

    Par contre si j'utilise le code comprenant le toast l'activité Affichage1 affiche les données
    sans problème comme ci-dessous:

    id: 1
    Type: bœuf
    Etat: cote
    Combien: 4
    Endroit: BG

    En conclusion:
    avec le code simpleCursor pas d'erreur lors de la compilation mais plante à l'appel de Affichage1

    sans le code simpleCursor mais avec le code comprenant le toast affichage1 s'ouvre
    normalement et affiche les données comme ci_dessus.

    Aurais tu une explication à cela?

    Cordialement merci

  14. #14
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Bonsoir

    L'erreur concernant le plantage à l'ouverture de l'activité Affichage1
    vient peut être des lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, produit,
                            new  String[] {"type"}, new  int[]{android.R.id.text1 });
     
            lv.setAdapter(adapter);
    Si je neutralise ces lignes ma fenêtre s'ouvre mais évidemment sans affichage.

    Le problème surgit lorsque j’essaye l'affichage avec simpleCursorAdapter.

    Qui peut m'aider Merci

  15. #15
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Ce que j'ai donné était un exemple : as-tu bien une colonne nommée "type" dans ton curseur ? j'ai l'impression qu'elle doit être en majuscule : "TYPE"
    Peut-être que carrément c'est ton curseur qui a planté en amont suite à une mauvaise requête SQL

    Bref, dans voir les messages d'erreurs, difficile de t'aider.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  16. #16
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Ce que j'ai donné était un exemple : as-tu bien une colonne nommée "type" dans ton curseur ? j'ai l'impression qu'elle doit être en majuscule : "TYPE"
    Peut-être que carrément c'est ton curseur qui a planté en amont suite à une mauvaise requête SQL

    Bref, dans voir les messages d'erreurs, difficile de t'aider.
    Bonsoir,

    Effectivement ma colonne TYPE existe en majuscule j'ai changé l'inscription "type" en "TYPE" tel que ça existe dans ma Bdd.
    Mais rien à faire le plantage persiste
    Je n'ai aucun message d'erreur d’ailleurs voici ce qui se trouve dans la fenêtre message:

    Gradle tasks [:app:assembleDEBUG]
    BUILD SUCCESSFUL
    0 errors
    0 warnings
    See complete output in console

    Puis il y a cela encore dans Gradle console

    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.


    Puis le déroulement affiché dans la console Gradle:

    Configuration on demand is an incubating feature.
    NDK is missing a "platforms" directory.
    If you are using NDK, verify the ndk.dir is set to a valid NDK directory. It is currently set to C:\Users\rapidego\AppData\Local\Android\sdk\ndk-bundle.
    If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.

    Incremental java compilation is an incubating feature.
    :app:preBuild UP-TO-DATE
    :app:preDebugBuild UP-TO-DATE
    :app:checkDebugManifest
    :app:preReleaseBuild UP-TO-DATE
    :app:prepareComAndroidSupportAppcompatV72221Library
    :app:prepareComAndroidSupportConstraintConstraintLayout102Library
    :app:prepareComAndroidSupportDesign2221Library
    :app:prepareComAndroidSupportSupportV42221Library
    :app:prepareDebugDependencies
    :app:compileDebugAidl UP-TO-DATE
    :app:compileDebugRenderscript UP-TO-DATE
    :app:generateDebugBuildConfig UP-TO-DATE
    :app:generateDebugResValues UP-TO-DATE
    :app:generateDebugResources UP-TO-DATE
    :app:mergeDebugResources UP-TO-DATE
    :app:processDebugManifest UP-TO-DATE
    :app:processDebugResources UP-TO-DATE
    :app:generateDebugSources UP-TO-DATE
    :app:incrementalDebugJavaCompilationSafeguard UP-TO-DATE
    :app:javaPreCompileDebug
    :app:compileDebugJavaWithJavac UP-TO-DATE
    :app:compileDebugNdk UP-TO-DATE
    :app:compileDebugSources UP-TO-DATE
    :app:mergeDebugShaders UP-TO-DATE
    :app:compileDebugShaders UP-TO-DATE
    :app:generateDebugAssets UP-TO-DATE
    :app:mergeDebugAssets UP-TO-DATE
    :app:transformClassesWithDexForDebug UP-TO-DATE
    :app:mergeDebugJniLibFolders UP-TO-DATE
    :app:transformNativeLibsWithMergeJniLibsForDebug UP-TO-DATE
    :app:processDebugJavaRes UP-TO-DATE
    :app:transformResourcesWithMergeJavaResForDebug UP-TO-DATE
    :app:validateSigningDebug
    :app:packageDebug UP-TO-DATE
    :app:assembleDebug UP-TO-DATE

    BUILD SUCCESSFUL

    Je vais revérifier le Query du code suivant qui renvoie le contenu du curseur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     public Cursor getViandesWithTitre(String titre)
        {
            //Recupere dans un cursor les valeurs correspondant à une viandes contenu
            // dans la BDD (ici on selectionne la viande grace a son titre)
            Cursor c = bdd.query(TABLE_VIANDES, new String[]{COL_ID, COL_TYPE, COL_ETAT,
                            COL_COMBIEN, COL_ENDROIT}, COL_TYPE + " LIKE\"" + titre + "\"", null, null,
                    null, null);
            return  c;
     
        }
    Qu'en penses tu de ce code?

    Ainsi que de l'appel de cette méthode dans Affichage1.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Appel méthode contenant les valeurs du Cursor
            Cursor produit = bddViandes.getViandesWithTitre(decoupe.getType());
    Cordialement et merci de t'occuper de mon problème

  17. #17
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Ce ne sont pas les messages Graddle qui m'intéressent, mais bien ceux du Logcat.

    En attendant, la concaténation suivante
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    " LIKE\"" + titre + "\""
    va produire un truc du genre . Et là on voit bien qu'il manque un espace après le LIKE en SQL.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  18. #18
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Ce ne sont pas les messages Graddle qui m'intéressent, mais bien ceux du Logcat.

    En attendant, la concaténation suivante
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    " LIKE\"" + titre + "\""
    va produire un truc du genre . Et là on voit bien qu'il manque un espace après le LIKE en SQL.
    Bonsoir,

    Ci-dessous message logcat après lancement de l'émulateur nexus

    03-24 19:39:12.298 3474-3474/com.example.rapidego.frigo1 E/SQLiteLog: (1) near "" boeuf"": syntax error
    03-24 19:39:12.299 3474-3474/com.example.rapidego.frigo1 D/AndroidRuntime: Shutting down VM
    03-24 19:39:12.299 3474-3474/com.example.rapidego.frigo1 E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.rapidego.frigo1, PID: 3474
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rapidego.frigo1/com.example.rapidego.frigo1.Affichage1}: android.database.sqlite.SQLiteException: near "" boeuf"": syntax error (code 1): , while compiling: SELECT ID, TYPE, ETAT, COMBIEN, ENDROIT FROM table_viandes WHERE TYPELIKE " boeuf"
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6077)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
    Caused by: android.database.sqlite.SQLiteException: near "" boeuf"": syntax error (code 1): , while compiling: SELECT ID, TYPE, ETAT, COMBIEN, ENDROIT FROM table_viandes WHERE TYPELIKE " boeuf"
    at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
    at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
    at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1318)
    at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1165)
    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1036)
    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1204)
    at com.example.rapidego.frigo1.GestionBDD.getViandesWithTitre(GestionBDD.java:105)
    at com.example.rapidego.frigo1.Affichage1.onCreate(Affichage1.java:44)
    at android.app.Activity.performCreate(Activity.java:6662)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)*
    at android.app.ActivityThread.-wrap12(ActivityThread.java)*
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)*
    at android.os.Handler.dispatchMessage(Handler.java:102)*
    at android.os.Looper.loop(Looper.java:154)*
    at android.app.ActivityThread.main(ActivityThread.java:6077)*
    at java.lang.reflect.Method.invoke(Native Method)*
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)*
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)*

    J'ai changé "boeuf" en "beef" le plantage persiste au lancement de l'activité Affichage1.java et voici le message logcat:

    02-12 00:14:58.385 5704-5704/com.example.rapidego.frigo1 E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rapidego.frigo1/com.example.rapidego.frigo1.Affichage1}: android.database.sqlite.SQLiteException: near ""beef"": syntax error: , while compiling: SELECT ID, TYPE, ETAT, COMBIEN, ENDROIT FROM table_viandes WHERE TYPELIKE "beef"
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1696)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)
    at android.app.ActivityThread.access$1500(ActivityThread.java:124)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3844)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: android.database.sqlite.SQLiteException: near ""beef"": syntax error: , while compiling: SELECT ID, TYPE, ETAT, COMBIEN, ENDROIT FROM table_viandes WHERE TYPELIKE "beef"
    at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
    at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:106)
    at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:67)
    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83)
    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49)
    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1365)
    at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1244)
    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1198)
    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1280)
    at com.example.rapidego.frigo1.GestionBDD.getViandesWithTitre(GestionBDD.java:105)
    at com.example.rapidego.frigo1.Affichage1.onCreate(Affichage1.java:44)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)*
    at android.app.ActivityThread.access$1500(ActivityThread.java:124)*
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)*
    at android.os.Handler.dispatchMessage(Handler.java:99)*
    at android.os.Looper.loop(Looper.java:130)*
    at android.app.ActivityThread.main(ActivityThread.java:3844)*
    at java.lang.reflect.Method.invokeNative(Native Method)*
    at java.lang.reflect.Method.invoke(Method.java:507)*
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)*
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)*
    at dalvik.system.NativeStart.main(Native Method)*

    Lorsque je neutralise les codes suivant la fenêtre affichage1.java s'ouvre sans problème
    c'est sûrement là que se situe l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cursor produit = bddViandes.getViandesWithTitre(decoupe.getType());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SimpleCursorAdapter adapter =
                    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, produit,
                            new  String[] {"TYPE"}, new  int[]{android.R.id.text1 });
     
            lv.setAdapter(adapter);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public Cursor getViandesWithTitre(String titre)
        {
            //Recupere dans un cursor les valeurs correspondant à une viandes contenu
            // dans la BDD (ici on selectionne la viande grace a son titre)
     
            Cursor c = bdd.query(TABLE_VIANDES, new String[]{COL_ID, COL_TYPE, COL_ETAT,
                            COL_COMBIEN, COL_ENDROIT}, COL_TYPE + "LIKE \"" + titre + "\"", null, null,
                    null, null);
            return  c;
     
        }
    Je consulte docs et tuto pour essayer de comprendre j'ai vraiment besoin d'aide.

    Cordialement et merci

  19. #19
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Bonsoir,
    Je viens d'essayer une autre méthode : la fonction getAll que voici ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     public Cursor GetAll(String type)
        {
            Cursor cursor = bdd.query(TABLE_VIANDES, new String[]{COL_ID,
                    COL_TYPE, COL_ETAT, COL_COMBIEN,
                    COL_ENDROIT }, null, null, null, null, null);
     
            return cursor;
        }
    Cela ne fonctionne toujours pas mais le message d'erreur logcat est plus parlant que voici:

    FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo
    {com.example.rapidego.frigo1/com.example.rapidego.frigo1.Affichage1}
    : java.lang.IllegalArgumentException: column '_id' does not exist

    la colonne id n'existe pas pourtant elle est déclarée

    public class GestionBDD
    {
    //variables
    private static final int VERSION_BDD = 1;
    private static final String NOM_BDD = "viandes.db";

    private static final String TABLE_VIANDES = "table_viandes";

    private static final String COL_ID = "ID";
    private static final int NUM_COL_ID = 0;
    private static final String COL_TYPE = "TYPE";
    private static final int NUM_COL_TYPE = 1;
    private static final String COL_ETAT = "ETAT";
    private static final int NUM_COL_ETAT = 2;
    private static final String COL_COMBIEN = "COMBIEN";
    private static final int NUM_COL_COMBIEN = 3;
    private static final String COL_ENDROIT = "ENDROIT";
    private static final int NUM_COL_ENDROIT = 4;

    private SQLiteDatabase bdd; // Declare objet bdd
    private MaBaseSQLite maBaseSQLite; // Declare objet maBaseSQLite

    Merci pour votre aide j'essaye encore

    cordialement

  20. #20
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Deux remarques :

    D'abord, il te manque maintenant un espace avant le LIKE, comme suit : . Egalement, si tu utilises LIKE il faut ensuite utiliser des caractères jokers comme % ou _

    Ensuite, il faut que ta requête SQL contienne impérativement un champs nommé "_id" (avec le _ devant !). J'avais fait la même remarque à un autre participant il y a quelques jours : https://www.developpez.net/forums/d1...e/#post9104365
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Remplacer une chaîne de caractères dans une base de données
    Par Furius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/11/2013, 21h06
  2. Réponses: 1
    Dernier message: 24/06/2010, 18h31
  3. Réponses: 1
    Dernier message: 27/05/2010, 17h22
  4. Réponses: 2
    Dernier message: 04/05/2007, 15h13
  5. créer une boulce pour lire dans une base de donnéé MySQL
    Par pierrot10 dans le forum Administration
    Réponses: 1
    Dernier message: 26/07/2006, 14h21

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