Früher habe ich die SwipeToDismiss- Bibliothek verwendet, aber jetzt versuche ich, auf RecyclerView zu migrieren, und die Dinge sind nicht so offensichtlich. Kennen Sie Ersatz für diese Bibliothek? Irgendwelche Ideen, wie man es von Grund auf umsetzt?
android
android-recyclerview
Viktor Yakunin
quelle
quelle
Antworten:
Ab Version 22.2.0 hat das Android-Supportteam eine
ItemTouchHelper
Klasse hinzugefügt, die das Wischen zum Entlassen und Ziehen und Ablegen ziemlich einfach macht. Dies ist möglicherweise nicht so umfassend wie einige der Bibliotheken, aber es kommt direkt vom Android-Team.Aktualisieren Sie Ihr build.gradle, um v22.2. + Der RecyclerView-Bibliothek zu importieren
Instanziieren Sie einen ItemTouchHelper mit einem geeigneten SimpleCallback
** Beachten Sie, dass der SimpleCallback die Richtungen berücksichtigt, in denen Sie Drag & Drop aktivieren möchten, und die Richtungen, in denen Sie das Wischen aktivieren möchten.
An Ihre RecyclerView anhängen
quelle
viewHolder
.Hier im Code wird, wenn der Benutzer nach links wischt, AlertDialog angezeigt. Wenn der Benutzer ENTFERNEN auswählt, wird das Element aus der Datenbank gelöscht und die Recycling-Ansicht aktualisiert. Wenn der Benutzer die Option ABBRECHEN auswählt, ist die Recycling-Ansicht unverändert.
quelle
if (direction == ItemTouchHelper.LEFT) // if swipe left
daItemTouchHelper.SimpleCallback
sie nur auf diese Wischrichtung beschränkt ist. Wenn Sie dannItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT)
und dann nach links und rechts wischen möchten, müssen Sie die Richtung überprüfen.AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // stuff to put the item back } });
adapter.notifyItemChanged(position);
den geklauten Gegenstand zurückgebracht habe, anstattnotifyItemRemoved
- was imho logischer ist.Vielleicht könnten Sie diese Bibliothek ausprobieren:
https://github.com/daimajia/AndroidSwipeLayout
Update: Ich habe gerade eine weitere gute Bibliothek gefunden, die Sie mit RecyclerView verwenden können:
https://github.com/hudomju/android-swipe-to-dismiss-undo
quelle
Diese Bibliothek kann hilfreich sein. Sie können sie
undo
imOnDissmiss
Einsatz implementierensupertoast
quelle
OnTouchListener
Inspiration von diesemIch habe die SwipeToDeleteRV- Bibliothek geschrieben, die die Funktion zum Wischen zum Löschen und Rückgängigmachen in Recycler-Ansichten unterstützt. Es basiert auf ItemTouchHelper und ist sehr einfach zu bedienen.
Ich hoffe, es kann für jemanden hilfreich sein, der mit denselben Problemen konfrontiert ist.
Als Beispiel können Sie Ihre Recycler-Ansicht in einem XML-Layout wie gewohnt sowie einige optionale Attribute definieren:
Alle stdrv-Attribute sind optional. Wenn Sie sie nicht angeben, werden die Standardwerte verwendet.
Erstellen Sie dann einen Adapter, der STDAdapter unterordnet, und rufen Sie den Superklassenkonstruktor auf. Etwas wie das:
}}
Stellen Sie als Nächstes sicher, dass Sie die
setupSwipeToDelete
Methode aufrufen, um die Funktion zum Streichen zum Löschen einzurichten.swipe_directions
ist die Richtung, in die Sie das Wischen von Elementen zulassen.Beispiel:
Das ist es! Weitere erweiterte Einstellungen (z. B. unterschiedliche Löschmeldungen für unterschiedliche Elemente festlegen, Elemente vorübergehend und dauerhaft entfernen, ...) finden Sie auf der Projekt-Readme-Seite.
quelle