2017-05-09 1 views
0

Was ich will ist, wenn der Benutzer klickt auf Kontakt ein Kontextmenü erscheint mit Element "löschen" so habe ich dies getan, aber das Problem ist, ich möchte, dass er auf eine Zeile löschen klickt Sqlit (das mit dem Kontakt entspricht klickte ich gerade) Activity.classZeile von sqlite löschen (Kontextmenü)

@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); 
} 

Antwort

0

Das Problem mit Ihrem Code ist, dass Ihr die ID "AdapterContextMenuInfo" Objekt erhalten und Senden Sie es an die Datenbank "delete()" -Methode. Aber tatsächlich müssen Sie die ID des Datenbankelements senden, den Wert, der in der Spalte "ID" dieser bestimmten Zeile in der SQlite-Datenbank gespeichert ist.

Bitte schauen Sie sich das untenstehende Tutorial an, überprüfen Sie speziell die Methoden "getContact()" und "deleteContact()" des Tutorials.

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

+0

ich werde diesen tuto überprüfen! Danke, aber wie kann ich die ID des Elements bekommen, auf das ich gerade geklickt habe? –

+0

Um die ID zu erhalten, müssen Sie zuerst das Element erhalten. Sie müssen Ihrem Adapter ein Array zugewiesen haben. Sie müssen die Position vom Adapter erhalten und die bestimmte Zeile aus dem Array an dieser bestimmten Position abrufen. Jetzt können Sie die ID aus dieser Zeile abrufen. –

+0

Wie kann ich das tun? –

Verwandte Themen