Je commence à utiliser RecyclerView
sur mes nouveaux projets d'école et RealmDB
comme source de données. Jusqu'à présent, tout va bien jusqu'à ce que je rafraîchis la liste. voici demo. Il y a clignotement d'écran noir qui se passe à cause de notifyDataSetChanged()
. Je peux définir un fond blanc au lieu de noir si je veux le rendre moins évident.Comment rafraîchir correctement ma liste de recycleur Afficher
Mais quel mécanisme dois-je utiliser pour éliminer totalement ce clignotement d'écran évident? Je serais très reconnaissant si j'obtiendrais le même résultat comme
Comment est-ce que j'actualise la vue de liste jusqu'ici?
- ÉTAPE 1. J'ai appelé api web à des postes reçus
ÉTAPE 2. Obtenir le résultat et la mise à jour ou l'ajouter à #realm
mRealm.executeTransactionAsync(new Realm.Transaction() { @Override public void execute(Realm realm) { for (Post post : posts) { //create post realm.copyToRealmOrUpdate(post); //create common result row CommonResult cr = new CommonResult(); int id = module.hashCode() + post.getId(); cr.setId(id); cr.setPost(post); cr.setPostid(post.getId()); cr.setTag(module.hashCode()); realm.copyToRealmOrUpdate(cr); } } }, new Realm.Transaction.OnSuccess() { @Override public void onSuccess() { RealmResults<CommonResult> cr = mRealm.where(CommonResult.class) .equalTo("tag", module.hashCode()) .findAll(); mPostView.showListingView(cr, hasNext()); } });
STEP 3. Realm informera les changements à l'adaptateur et le bloc de notification appellera
notifyDataSetChanged()
sur l'adaptateur recycleur.
Mon adaptateur (RecyclerView.Adapter
)
this.data.addChangeListener(new RealmChangeListener<RealmResults<CommonResult>>() {
@Override
public void onChange(RealmResults<CommonResult> element) {
notifyDataSetChanged();
}
});
MISE À JOUR J'avais changé notifyDataSetChanged()
-notifyItemChanged(i, element)
. Le clignotement est parti et l'animation devient plus lisse :-)
comment et où vous appelez onChange (---) Méthode d'écoute – Rahul
Salut @Rah, RealmDB appellera cette méthode automatiquement s'il y a des changements à l'intérieur de cette table. – Sanny
pouvez-vous s'il vous plaît ajouter un journal à l'intérieur onChange() méthode et vérifier combien de fois le journal se déclencher/imprimer, parce que vous avez autant d'enregistrements et cette méthode est appelée plusieurs fois – Rahul