[JAVA] Ich wollte eine Zeile animieren, wenn ich Realm und RecyclerView unter Android verwende, aber ich habe aufgegeben

Umgebung

Einführung

Android ist fast ein Anfänger. Also sei sanft .. Es ist schwer, "Recycler" als "Recycle" loszuwerden.

Was hast du getan

Bei Verwendung von Realm und RecyclerView wollte ich die Zeilenanimation beim Löschen von Daten ausführen (Aktualisierung im Modell), aber es gab verschiedene Dinge, die ich nicht getan habe.

Einführung?

Ich war der Meinung, dass die folgende Methode eine einfache Methode ist, um "Hinzufügen", "Aktualisieren", "Verschieben" und "Löschen" zu Row of RecyclerView unter Android zu animieren.

notifyItemChanged / notifyItemRangeChanged
notifyItemInserted / notifyItemRangeInserted
notifyItemMoved
notifyItemRemoved / notifyItemRangeRemoved

Unterklasse von ItemAnimator

Dieses Mal habe ich mich für [SimpleItemAnimator] entschieden (https://developer.android.com/reference/android/support/v7/widget/SimpleItemAnimator.html).

A wrapper class for ItemAnimator that records View bounds and decides whether it should run move, change, add or remove animations. This class also replicates the original ItemAnimator API.

Wie Sie im offiziellen Dokument sehen können, scheint es sich um eine Klasse zu handeln, die ItemAnimator auf einfach zu verwendende Weise umschließt. Daher dachte ich, dies würde ausreichen, wenn ich nichts Aufwändiges tun würde.

Als nächstes implementierte ich die notwendigen Methoden.

class MainTimelineRowAnimator : SimpleItemAnimator() {

  override fun runPendingAnimations() {...}
  override fun animateAdd(holder: RecyclerView.ViewHolder?): Boolean {...}
  override fun animateChange(oldHolder: RecyclerView.ViewHolder?, newHolder: RecyclerView.ViewHolder?, fromLeft: Int, fromTop: Int, toLeft: Int, toTop: Int): Boolean {...}
  override fun animateMove(holder: RecyclerView.ViewHolder?, fromX: Int, fromY: Int, toX: Int, toY: Int): Boolean {...}
  override fun animateRemove(holder: RecyclerView.ViewHolder?): Boolean {...}
  override fun isRunning(): Boolean {...}
  override fun endAnimation(item: RecyclerView.ViewHolder?) {...}
  override fun endAnimations() {...}
}

Dieser Artikel war für die Erklärung von Item Animator von RecyclerView sehr einfach zu verstehen.

Zusammenfassung bisher

Wenn Sie die Zeile in RecyclerView animieren möchten, können Sie nach dem Löschen des Datasets die Typmethode "notifyItemXXX" aufrufen.

Reich hier

Um Realm mit RecyclerView zu verwenden, verwenden Sie "RealmRecyclerViewAdapter". Werfen wir hier einen Blick auf die Implementierung.

// Right now don't use generics, since we need maintain two different
// types of listeners until RealmList is properly supported.
// See https://github.com/realm/realm-java/issues/989
this.listener = hasAutoUpdates ? new RealmChangeListener() {
    @Override
    public void onChange(Object results) {
        notifyDataSetChanged();
    }
} : null;

Wie in Github erläutert, werden detaillierte Benachrichtigungen noch nicht unterstützt. Selbst wenn Sie notifyItemRemoved () auf der Seite Aktivität, Fragment aufrufen, reagiert es nicht ...

Recommended Posts

Ich wollte eine Zeile animieren, wenn ich Realm und RecyclerView unter Android verwende, aber ich habe aufgegeben
Wir stellen vor, was ich gemacht habe, als ich RecyclerView eine Kopf- und Fußzeile hinzufügen wollte
[Android] Ich habe SQLite beendet und versucht, Realm zu verwenden
Ich möchte eine Verbindung herstellen, wenn eine Datenbank mit Spring und MyBatis erstellt wird
Ich habe versucht, TabLayout unter Android eine Trennlinie hinzuzufügen
Ein Hinweis, als ich süchtig danach war, Ubuntu auf WSL1 in WSL2 zu konvertieren
Ich möchte eine Datei mit Ruby im Internet herunterladen und lokal speichern (mit Vorsicht).
Ich habe versucht, eine einfache Gesichtserkennungs-Android-Anwendung mit OpenCV zu erstellen
Ich habe die Punkte zusammengefasst, die bei der kombinierten Verwendung von Ressourcen und Ressourcen zu beachten sind
[Android] So aktivieren / deaktivieren Sie das Benachrichtigungsfeld mit StatusBarManager
Eine Geschichte, der ich beim Testen der API mit MockMVC verfallen war
[Android] Übergeben von Bildern und Empfangen von Rückrufen beim Teilen mit ShareCompat
Ich habe eine Taschenrechner-App für Android erstellt
Eine Notiz, die ich aufgegeben habe, um eine benutzerdefinierte Anmerkung für Lombok zu erstellen
Eine Geschichte, als ich versuchte, ein Video zu erstellen, indem ich Processing und Resolume verknüpfte
Was ich versucht habe, als ich alle Felder einer Bohne bekommen wollte
Ich habe versucht, "nifty cloud mobile backend" und "Firebase" -Authentifizierung auf Kotlin + Android zu verwenden