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