2017-05-09 1 views
0

Ce que je veux, c'est quand l'utilisateur clique sur contact un contexte Menu apparaît avec l'item "supprimer" donc je l'ai fait, mais le problème c'est que je veux quand il clique sur Sqlit (qui correspond au contact que je viens cliqué) Activity.classSupprimer ligne de sqlite (menu contextuel)

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.context_menu, menu); 

} 


@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    int i = info.position; 
    switch (item.getItemId()) { 
     case R.id.delete: 

      dbHandler.deleteEtudiant(i); 
      Toast.makeText(this,"deleted "+i, Toast.LENGTH_SHORT).show(); 
      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

MyDBHandler.class

public void deleteEtudiant(int i) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete("etudiant", "Id+ =" + i, null); 
} 

Répondre

0

le problème avec votre code est que votre obtiennent l'id de l'objet "AdapterContextMenuInfo" et l'envoi à la base de données "delete()" méthode. Mais en fait, vous devez envoyer l'ID de l'élément de la base de données, la valeur qui est stockée dans la colonne "ID" de cette ligne particulière dans la base de données SQlite.

Veuillez lire le tutoriel ci-dessous, en particulier les méthodes "getContact()" et "deleteContact()" du tutoriel.

http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

+0

Je vais vérifier ce tuto! merci mais comment puis-je obtenir l'identifiant de l'élément sur lequel je viens de cliquer? –

+0

Pour obtenir l'identifiant, vous devez d'abord obtenir l'article. Vous devez avoir donné un tableau à votre carte. Vous devez obtenir la position de l'adaptateur et obtenir la ligne spécifique du tableau sur cette position spécifique. Vous pouvez maintenant obtenir l'identifiant de cette ligne. –

+0

comment puis-je faire cela? –