Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Problem Elemente eines SimpleCursorAdapter zu löschen

Das Thema "Problem Elemente eines SimpleCursorAdapter zu löschen" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 11.07.2009, 10:46   #1 (permalink)
Neuer Benutzer

Registriert seit: 11.07.2009
Beiträge: 23
Abgegebene Danke: 2
Erhielt 1 Danke für 1 Beitrag
Standard Problem Elemente eines SimpleCursorAdapter zu löschen

Hallo,
ich bin noch ziemlicher Anfänger (haben vor Jahren eine Zeitlang als Hobby J2ME programmiert).
Zur Zeit schreibe ich mir ein kleines Programm um meine Arbeitszeiten zu erfassen. Die Einträge werden mit SQLite gespeichert und in einer Liste mittels einer Listactivity dargestellt.
Der entsprechende Code um die Liste zu füllen ist:

// DB Abfrage in den cursor laden
Cursor cursor = db.query(false,"buchungen",new String[]{"_id","buchung"},null,null,null,null,null,null );
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.buchungslist_item, cursor,new String[] {"buchung"}, new int[] { android.R.id.text1 });
setListAdapter(adapter);


Ich benutze dann ein ContextMenu um Optionen für jeden Eintrag auswählen zu können, z.Bsp einen Eintrag zu löschen. Der bisher einzige Weg, der mir dazu einfiel ist wie folgt:

public boolean onContextItemSelected(MenuItem item) {
info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case MENU_ITEM_DELETE: {
// getItem erwartet int nicht long und hat einen Versatz um 1
select = (int) info.id - 1;
// Den Cursor auf den ausgewählten Entry aus der Liste setzen:
Cursor cursor = (Cursor) getListAdapter().getItem(select);
// Zur Kontrolle die Werte des ausgewählten Entry nochmals ausgeben:
String the_id = cursor.getString(0); // Die _id des Eintrags
String datum = cursor.getString(1); // Den Text des Eintrags
final Toast hinweis = Toast.makeText(this , "Deleting Entry ("+the_id+"):+datum,Toast.LENGTH_LONG);
hinweis.show();
// Jetzt wird der Eintrag gelöscht
db.delete("buchungen","_id = ?", new String[]{the_id});


Mein Problem ist jetzt, das das ganze einmal wunderbar funktioniert. Allerdings werden bei diesem Vorgang weder der Cursor noch der ListAdapater davon informiert, dass Elemente gelöscht wurden, und beim nächten mal löschen, löscht man entweder ein falsches Element oder bekommt gar eine Runtime Exception.
Grund ist wohl, dass die Listen im Cursor oder im ListAdapter keinen Refresh erhalten und somit nichts von der geänderten Datenbank wissen.

Meine Frage ist nun, wie ich das am Besten lösen kann.
loriot ist offline   Mit Zitat antworten
Alt 12.07.2009, 08:40   #2 (permalink)
Android Guru
 
Benutzerbild von enjoy_android

Registriert seit: 10.12.2008
Beiträge: 1.346
Abgegebene Danke: 64
Erhielt 99 Danke für 56 Beiträge
Standard AW: Problem Elemente eines SimpleCursorAdapter zu löschen

Paste #fc53vbgKjThlft9nF19A | LodgeIt!

So in der Art sollte es funktionieren. Wichtig ist das du die geklickte Position richtig bestimmst, dass ist bei dir falsch gelöst.

Greetz
__________________
G1, Nexus One, Nexus S, Galaxy Nexus - Vanilla Android = Android!
enjoy_android ist offline   Mit Zitat antworten
Alt 12.07.2009, 11:42   #3 (permalink)
Neuer Benutzer

Registriert seit: 11.07.2009
Beiträge: 23
Abgegebene Danke: 2
Erhielt 1 Danke für 1 Beitrag
Standard AW: Problem Elemente eines SimpleCursorAdapter zu löschen

Hallo Greetz,
vielen vielen Dank !!! Das klappt bisher echt super

Ich habe allerdings noch 1 Problemchen: Im Moment werden die Element richtig gelöscht, allerdings wird die Liste nach dem Löschen nicht neugezeichnet, trotz:
adapter.notifyDataSetChanged();

Wenn man einmal aus der Liste rausgeht und neustartet, dann ist die Liste allerdings OK und das gelöschte Element ist weg. Gibt es noch ein Kommando, mit der man das Gesamtfenster neuzeichnen kann, also eine Methode für die Klasse ListActivity ?

Grüße
Andreas
loriot ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht





Du liest gerade: "Problem Elemente eines SimpleCursorAdapter zu löschen" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.