Ich habe ein ListView
mit einem CursorLoader
. Der Benutzer kann ListView
-Elemente öffnen (ein anderes Fragment
öffnen) oder Elemente löschen. Alle Datenbankaktionen laufen asynchron ab und dauern normalerweise einen Bruchteil einer Sekunde. Aber technisch könnte der Benutzer ein Element löschen und dann das Element vor dem Löschen Callback und Ursache und Fehler öffnen. Was ist der beste Weg, damit umzugehen? Hier sind die Optionen, die ich sehe.
AsyncTask
immer schnell genug passieren wird, um ein Problem zu vermeiden ListView
vor AsyncTask
ungültig (dies würde jedoch zu einem Flash in der Benutzeroberfläche führen) AsyncTask
Bearbeiten: Ich habe RecyclerView
verwendet, aber ich kann adapter.notifyItemRemoved(itemPos)
erst aufrufen, nachdem ich das Element aus der Datenbank gelöscht habe.
Die beste Option in Ihrem Fall ist RecyclerView
. Wenn Sie auf Löschen geklickt haben, können Sie adapter.notifyItemRemoved(itemPos)
aufrufen. Das Listenelement wird also mit der Animation von RecyclerView
entfernt und Sie müssen sich nicht um das Ergebnis der Löschoperation kümmern.
Lesen Sie das Tutorial für Android-Entwickler zu Erstellen von Listen und Karten :
Verwenden Sie das Widget
RecyclerView
, wenn Sie über Datensammlungen verfügen, deren Elemente ändern sich zur Laufzeit basierend auf Benutzeraktionen oder Netzwerkereignissen.
Hier ist ein Beispiel:
%Vor%Tags und Links android database listview asynchronous android-recyclerview