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
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 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; } }
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
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 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 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); } }
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
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; }
Qui pourrait bien m'aider pour résoudre mon problème de ListView avec Bdd.
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); } }
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
Partager