[JAVA] Je voulais animer une ligne lors de l'utilisation de realm et RecyclerView sur Android, mais j'ai abandonné

environnement

introduction

Android est presque un débutant. Alors soyez doux. Il est difficile de se débarrasser de «Recycler» comme «Recycler».

Qu'est-ce que tu as fait

Lors de l'utilisation de Realm et RecyclerView, je voulais exécuter l'animation de ligne lors de la suppression des données (mise à jour dans le modèle), mais il y avait diverses choses que je n'ai pas faites.

Introduction?

J'ai senti que la méthode suivante est une méthode simple pour animer ʻadd, update, move et delete` vers Row of RecyclerView sur Android.

notifyItemChanged / notifyItemRangeChanged
notifyItemInserted / notifyItemRangeInserted
notifyItemMoved
notifyItemRemoved / notifyItemRangeRemoved

Sous-classe de ItemAnimator

Cette fois, j'ai décidé d'utiliser SimpleItemAnimator.

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.

Comme vous pouvez le voir dans le document officiel, il semble que ce soit une classe qui enveloppe ItemAnimator d'une manière facile à utiliser, alors j'ai pensé que ce serait suffisant si je ne faisais rien de élaboré.

Ensuite, j'ai implémenté les méthodes nécessaires.

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() {...}
}

Cet article était très facile à comprendre pour l'explication de Item Animator de RecyclerView.

Résumé à ce jour

Si vous souhaitez animer la ligne dans RecyclerView, vous pouvez appeler la méthode de type notifyItemXXX après avoir supprimé l'ensemble de données.

Royaume ici

Pour utiliser realm avec RecyclerView, utilisez RealmRecyclerViewAdapter. Jetons un œil à l'implémentation ici.

// 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;

Comme discuté dans Github, il indique qu'il ne prend pas encore en charge les notifications détaillées. Donc, même si vous appelez notifyItemRemoved () du côté Activity, Fragment, il ne répond pas ...

Recommended Posts

Je voulais animer une ligne lors de l'utilisation de realm et RecyclerView sur Android, mais j'ai abandonné
Présentation de ce que j'ai fait lorsque je voulais ajouter un en-tête et un pied de page à RecyclerView
[Android] J'ai quitté SQLite et essayé d'utiliser Realm
Je souhaite établir une connexion lorsqu'une base de données est créée à l'aide de Spring et MyBatis
J'ai essayé d'ajouter une ligne de séparation à TabLayout sur Android
Une note quand j'étais accro à la conversion d'Ubuntu sur WSL1 en WSL2
Je souhaite télécharger un fichier sur Internet en utilisant Ruby et l'enregistrer localement (avec prudence)
J'ai essayé de créer une simple application Android de reconnaissance faciale en utilisant OpenCV
J'ai résumé les points à noter lors de l'utilisation combinée des ressources et des ressources
[Android] Comment activer / désactiver le panneau de notification à l'aide de StatusBarManager
Une histoire à laquelle j'étais accro lors du test de l'API à l'aide de MockMVC
[Android] Comment transmettre des images et recevoir des rappels lors du partage à l'aide de ShareCompat
J'ai créé une application de calculatrice sur Android
Une note que j'ai renoncé à essayer de créer une annotation personnalisée pour Lombok
Une histoire où j'ai essayé de faire une vidéo en liant Traitement et Resolume
Ce que j'ai essayé quand je voulais obtenir tous les champs d'un haricot
J'ai essayé d'utiliser "nifty cloud mobile backend" et l'authentification "Firebase" sur Kotlin + Android