Bonsoir,
j'ai programmé une Base de données à l'aide d'Android Studio.
Elle fonctionne, mais un problème se présente à l'affichage des données dans ma Listview.
En effet lorsque je lance mon application pour la première fois une ligne de données
s'affiche correctement.
Le problème c'est qu'à chaque réouverture de la fenêtre une ligne des mêmes données se rajoute !!!
Comment faire pour éviter cela ?
Voici une partie de 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 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); //recuperation du listview present dans mon IHM ListView lv = (ListView) findViewById(R.id.Afficheliste); Cursor data = bddViandes.crerColonne(); // appel méthode pour créer l'alias _id SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, data, 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
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public void open() { //on ouvre la bdd en ecriture bdd = maBaseSQLite.getWritableDatabase(); } 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_ENDROIT, viandes.getEndroit()); values.put(COL_NOMBRE, viandes.getNombre()); //On insere l'objet dans la BDD via le ContentValues return bdd.insert(TABLE_VIANDES, null, values); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public Cursor crerColonne() { return bdd.rawQuery("SELECT ID as _id, TYPE FROM table_viandes", null); }
Merci pour toute réponse
rapidego
Partager