RecyclerView.ViewHolder de setIsRecyclable() func

0

La question

Je veux mettre mon point de vue, titulaire de ne pas recycler, voici le code:

@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int position) {
    viewHolder.setIsRecyclable(false);
}

Cependant, quand je vois la documentation ici: https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder#setIsRecyclable(boolean)il est écrit que le setIsRecycleable() doit toujours être associé et je n'ai aucune idée à ce sujet. Quelqu'un peut-il fournir un exemple de code pour ce cas? Quand devrais-je appeler le setIsRecyclable(vrai) à nouveau? Merci.

enter image description here

3
0

Pas de recyclage de l' ViewHolder signifie simplement que spécifique ViewHolder sera retenu et non pas écrasé quand il y a de nouvelles données à lier, le problème est la Adapter aura ensuite besoin d'un autre ViewHolder de faire pour l'une, il ne peut pas les réutiliser.

C'est pourquoi vous avez besoin pour finalement le laisser recycler c'est à dire setIsRecycleable(true) parce que ça défaites le point de la RecyclerView si elle finit par avoir à créer de nouveaux points de vue pour représenter les données.

Une raison quelconque, vous souhaitez peut-être désactiver le recyclage est pour éviter les interruptions, peut-être la ViewHolder lecture d'une animation, ou le chargement d'une vidéo. Une fois que c'est fait vous pouvez alors activer le recyclage, à la libération de la ViewHolder pour s'assurer qu'il peut être utilisé à nouveau.

2021-11-24 06:12:08
0

Il est préférable d'utiliser Listview dans ce cas. Tout le sens de recyclerview est de recycler la vue. D'autre voir ce post https://stackoverflow.com/a/36275862/3094367

2021-11-24 06:03:40
0

En fait le recyclage est liée à viewType.
Vous venez de changer tous les itemType est unique
comme:

@Override
public int getItemType(int position){
    return position
}
2021-11-24 06:28:44

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................