In einer snackbar Aktion, wie kann ich sicher sein, dass es sicher ist, dauerhaft löschen und einen soft-gelöschte Datensatz aus der Datenbank?
Ich bin mit Snackbar in android und ich habe umgesetzt, eine Aktion, so dass Benutzer kann die Aktion rückgängig machen (die Aktion ist löschen alle Elemente in der listview).Das entfernen und hinzufügen der Elemente zurück in die listview ist bereits fertig und funktioniert Prima.
Mein Problem ist, dass die Elemente gespeichert, die in sqlite-Datenbank und wie kann ich die Elemente löschen von Tabellen? (Wie kann ich wissen, dass der Benutzer nicht geklickt die Schaltfläche rückgängig, so dass ich vollständig zu entfernen, die Daten aus der Datenbank).
Dies ist der code, der in OnOptionsItemSelcted()
case R.id.action_clear:
final List<Word> temp = new ArrayList<Word>(data);
data.clear();
adapter.notifyDataSetChanged();
View view = findViewById(R.id.layoutFavWords);
Snackbar.make(view,"Deleted Saved Selection.", Snackbar.LENGTH_LONG).
setAction("Undo", new OnClickListener() {
@Override
public void onClick(View v) {
for(Word word:temp)
data.add(word);
adapter.notifyDataSetChanged();
}
}).show();
break;
Also, wenn der Benutzer nicht klickt den button "rückgängig", während die sichtbare Zeit der Imbissstube, dann brauche ich, um dauerhaft zu löschen Daten aus der Datenbank.
Irgendwelche Lösungen dafür?
- löschen Sie Sie sofort und setzen Sie Sie wieder ein, wenn das drücken auf rückgängig machen ?
- ja, eine weitere option. Aber gibt es eine Möglichkeit, das zu erreichen, was ich will?? löschen Sie nur, wenn der Benutzer noch nicht angeklickt rückgängig btn
- imo seine gut genug. Sie davon ausgehen, dass der Benutzer weiß, was er will, aber er kann seine Meinung ändern (rückgängig machen). Oder möchten Sie wahrscheinlich ein
confirm-like
snackbar. Suchen Sie in der Dokumentation sieht es nicht viel mehr als ein Toast - Ich habe zu tun, wenn es keine Möglichkeit gibt, es zu erreichen, wie die. Danke für die Antwort
- Sie möchte eine Art entlassen Ereignis, das nicht verfügbar ist, zumindest in der Dokumentation,
- Was passieren wird, wenn Benutzer Daten löschen und dann töten Sie Ihre app? Die Datensätze bleiben in der db, das ist nicht richtig, löschen-Taste, so sollen entfernen die Datensätze sofort und Sie brauchen, um zu retten temp dieser Aufzeichnungen für "RÜCKGÄNGIG", auf " RÜCKGÄNGIG ausgewählt, müssen Sie es in der db wieder und die Liste neu laden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soweit ich weiß, es ist by design. Sie sollten:
Dieser Ansatz ist sicherer und stabiler, Sie sollten nicht warten, bis die snackbar entlassen werden, denn die Aktion könnte auch nicht passieren. Man denke nur an user die Funktion sofort-beenden der app, während die snackbar ist immer noch auf: sollte der Artikel gelöscht werden oder nicht? Es sollte.
Eine Vertrauenswürdige Quelle ist g+ post von Ian Lake (gelöscht, da der G+ Auslaufen). In den Kommentaren kann man Lesen:
Android Support library v23 Hinzugefügt Snackbar.Rückruf, die Sie verwenden können, zu hören, wenn der snackbar wurde entlassen, vom Benutzer oder timeout.
Beispiel entlehnt astinxs post:
Beispiel:
Kann es eine gute Idee, fügen Sie ein wenig in die snackbar.getDuration () - Zeit (100-200ms?) als Timer nicht sehr genau in Bezug auf Zeitpunkt und auf diese Weise können Sie aufgerufen, kurz bevor die snackbar ist etwa zu schließen, obwohl die Möglichkeit eher klein in diesem Fall.
Wenn Sie nicht möchten, löschen Sie den Datensatz aus der Datenbank unverzüglich, versuchen Sie dies:
Mein Weg zu hv "gelöscht" Spalte, boolean, ändern Sie einfach den Wert wahr, wenn die Löschung dann rückgängig machen, um wieder zu ändern stat falsch zu sein, auch u vielleicht möchten trash-controller oder Planer löschen Sie alle falschen Werte, auf jede Woche.