J'utilise Glide 3.7.0 avec RecyclerView
. La vue des éléments clignote toujours lors de l'actualisation (en appelant notifyDataSetChanged
).
Voici mon code:
Glide
.with(context)
.load(filepath)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.dontAnimate()
.into(imageview);
Lorsque je n'utilise pas de cache, la variable ImageView
a un bitmap nul lorsque la méthode notifyDataSetChanged
est appelée et que Glide n'a pas fini de charger le bitmap.
Si j'utilise le code ci-dessous:
Glide
.with(context)
.load(filepath)
.dontAnimate()
.into(imageview);
Ensuite, l'élément ImageView
ne clignote plus (à l'aide du cache).
Je souhaite mettre à jour la vue des éléments de manière dynamique, donc je désactive le cache de plané.
Existe-t-il des solutions pour résoudre ce problème de clignotement?
Merci beaucoup!
Après mes nombreuses tentatives, il suffit d’utiliser SimpleTarget pour résoudre mon problème Merci!
Glide
.with(context)
.load(filepath)
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.dontAnimate()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap arg0, GlideAnimation<? super Bitmap> arg1) {
// TODO Auto-generated method stub
holder.mItemView.setImageBitmap(arg0);
}
});
Dans mon cas, j'ai résolu le problème en utilisant des dimensions définies sur ma imageView
.
<ImageView
Android:id="@+id/poster_imageview"
Android:layout_width="130dp"
Android:layout_height="183dp"
Android:adjustViewBounds="true"
Android:scaleType="centerCrop"
Android:src="@drawable/placeholder" />
Mettre à jour Glide de la version 3 à la version 4 et setSupportsChangeAnimations(false)
pour RecyclerView problème résolu pour moi
RecyclerView.ItemAnimator animator = recyclerView.getItemAnimator();
if (animator instanceof SimpleItemAnimator) {
((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
}
N'oubliez pas non plus de setHasStableIds(true);
dans votre adapter
et de remplacer correctement la méthode getItemId()
.