Wie aktualisiere ich meine ListView nach änderungen in der Datenbank?

Ich versuche zu verwalten, eine einfache Liste in einem Android-Anwendung. Der Inhalt der Liste gepflegt werden, in eine SQLite-Datenbank. Wenn der Benutzer auswählt, und hält auf eine bestimmte Zeile, erscheint ein Kontextmenü mit einer option "Löschen". Wenn Sie wählen Sie "Löschen", wird die Zeile aus der Datenbank gelöscht, aber in der Ansicht nicht aktualisieren. Wenn ich zurück aus der Anwendung heraus und zurück in die entsprechende Zeile entfernt wurde. Also, ich weiß, die Zeile ist gelöscht, es ist nur der ListView nicht aktualisieren.

Hier sind die relevanten bits von code...

In der onCreate-Methode...

SQLiteDatabase db = tasks.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, 
    new String[] { _ID, TITLE, DETAILS, }, 
    null, null, null, null, TITLE + " DESC");
startManagingCursor(cursor);

ListView lv = (ListView) findViewById(R.id.list);
lv.setAdapter(new SimpleCursorAdapter(this, 
    android.R.layout.simple_list_item_1,
    cursor,
    new String[] {TITLE},
    new int[] { android.R.id.text1}
));

In der onContextItemSelected Methode...

switch(item.getItemId()) {
case 0:
    SQLiteDatabase db = tasks.getWritableDatabase();
    ListView lv = (ListView) findViewById(R.id.list);
    SimpleCursorAdapter adapter = (SimpleCursorAdapter) lv.getAdapter();
    db.delete(TABLE_NAME, "_ID=?", new String[] {adapter.getCursor().getString(0)});
    adapter.notifyDataSetChanged(); // Not working, clears screen and doesn't reload
    return true;
}
return super.onContextItemSelected(item);

Was bin ich?

Dank!

Schreibe einen Kommentar