Mein Buch „Hallo Android“ gibt dies als eine Möglichkeit, einen benutzerdefinierten db Helfer zu verwenden, um einen Cursor einrichten, und dann ein Adapter Einrichtung wie folgt:bester Weg Adapter/Listview auf Android aktualisieren
Cursor cursor
CustomDatabaseHelper test = new CustomDatabaseHelper(this);
try {
cursor = getData();
showData(cursor);
} finally {
test.close();
}
Mit diesem jedoch muss ich jedes Mal, wenn ich den Datensatz aktualisieren muss, diesen Codeblock laufen lassen (was in einem onClick() für eine Schaltfläche etwas schwierig wird, weil "dieser" nicht verfügbar ist.
Ist dies der beste Weg, um den Datensatz zu aktualisieren, oder sollte ich versuchen, die .close zu entfernen und ein adapter.notifyDataSetChanged() ausstellen? Wenn ich dies tue, bekomme ich manchmal eine Kraft zu schließen (und ich kann nicht erinnere mich im Moment), aber manchmal kann es nicht richtig löschen - ich denke, das kann daran liegen, dass die Datenbank gerade geöffnet ist und versucht, sie wieder zu öffnen.
Sollen wir auch die Variablen für die Cursor, DatabaseHelpers und Adapter in der Klasse deklarieren (außerhalb von OnCreate), damit sie für alle Funktionen zugänglich sind?
Ich weiß, das ist nur schlechte Programmierung in diesem Stadium, aber ich versuche, ein paar Hinweise auf die beste Art, Dinge zu tun.
Nur eine Bemerkung am Rande: Dinge ein wenig anders sind, wenn Sie Content-Provider und LoaderManager verwenden. Siehe: http://StackOverflow.com/a/19657500/1087411 – Anderson