RecyclerView: comment faire pour effacer le cache/recyclé point de vue?

- Je utiliser un RecyclerView pour afficher une liste d'éléments avec une mise en forme de liste. Je switch à partir d'une liste mise en page d'une grille de mise en page, montrant seulement un sous-ensemble de toutes les données lorsque dans la grille de mise en page. Ce commutateur utilise une mise en page différente XML que lors de la mise en forme de liste est présentée.

Tout cela fonctionne bien, sauf que quand je scroll, recyclés (mis en cache?) liste des affichages de la disposition de remplir la grille, mélangé avec la bonne présentation de la grille afficher les éléments. En d'autres termes, au lieu d'utiliser mon layout_grid.xml pour chaque élément de la mise en page dans le RecyclerView, je reçois des éléments à l'aide de la layout_list.xml mise en page, mais dans un format de grille.

Cela me dit le LayoutManager fonctionne correctement, le passage d'une liste à la grille de mise en page. Mais pas tous les articles affichage des articles sont recréés à l'aide de la grille de mise en page xml, mais plutôt recyclé liste mise en page vues sont utilisées.

J'ai essayé RecyclerView.removeAllViews(), RecyclerView.removeAllViewInLayout(), RecyclerView.swapAdapter() (à force de l'adaptateur de rechargement), en vain.

Mise à jour:

Si je défilement de deux positions vers le bas dans la liste, puis passer de la liste de la grille, les deux premières positions ne passent pas par onCreateViewHolder(), mais directement à onBindViewHolder() et ne sont donc pas obligés d'utiliser la grille de mise en page xml. Au lieu de ces deux premières position des éléments sont recyclés (je pense) et les affiche dans la liste mise en page format.

OriginalL'auteur mraviator | 2015-01-14