RecyclerView: Charger l'avance de visibilité

voix
0

Dans mon application, j'ai un recyclerview qui charge les images à partir des données mp3 meta et les place dans leur viewholder dans mon application.

Cependant, lors du défilement, vous pouvez voir rapidement clairement que le RV ne peut pas suivre, même si le chargement se produit sur un autre fil.

L'image standart pour le viewholder est visible pour une fraction de seconde, puis un peu de lag se produit et l'image est remplacée par le bon.

Toutefois, lorsque l'utilisateur fait défiler sauvegarder, tout va bien puisque les articles sont pour la plupart encore dans le cache.

Comment puis-je gérer pour obtenir le « cache » être en avance avant l'utilisateur fait défiler?

Donc, dire que l'utilisateur démarre l'application et est pos 0. visible sont des éléments 0 - 10. Dès que l'utilisateur fait défiler maintenant, point 11 devient visible et doit être amorcé. Mais je veux que ce soit déjà chargé avant que le défilement se produit alors:

L'utilisateur est pos 0. Visible sont des articles 0 - 10 et chargés sont des articles 0 - 25. Lorsque l'utilisateur fait défiler NOW, les charges de VR articles 25-30 même que tu points 5 - 15 ans sont actuellement visibles. Ainsi, les charges de VR à venir.

Comment peut-on continuer à ce sujet?

Merci et acclamations.

Créé 18/12/2018 à 11:07
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

J'étais intelligent:

public class PreCachingLayoutManager : LinearLayoutManager
{
     private const int DEFAULT_EXTRA_LAYOUT_SPACE = 1000;
     private int extraLayoutSpace = -1;
     private Context context;

     public PreCachingLayoutManager(Context context) : base(context)
    {
         this.context = context;
     }

     public void setExtraLayoutSpace(int extraLayoutSpace)
     {
         this.extraLayoutSpace = extraLayoutSpace;
     }

     protected override int GetExtraLayoutSpace(RecyclerView.State state)
     {
         if (extraLayoutSpace > 0)
         {
             return extraLayoutSpace;
         }
         return DEFAULT_EXTRA_LAYOUT_SPACE;
     }
}

        mLayoutManager = new PreCachingLayoutManager(this);
        mLayoutManager.ItemPrefetchEnabled = true;
        mRecyclerView.SetLayoutManager(mLayoutManager);
Créé 18/12/2018 à 12:24
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more