RecyclerView: ¿cómo borrar vistas en caché / recicladas?

Yo uso un RecyclerView para mostrar una lista de elementos con un diseño de lista. Cambio de un diseño de lista a un diseño de cuadrícula, mostrando solo un subconjunto de todos los datos cuando estoy en el diseño de cuadrícula. Este modificador usa un XML de diseño diferente que cuando se presenta el diseño de lista.

Todo esto funciona bien, excepto que cuando me desplazo, las vistas de diseño de lista reciclada (en caché) pueblan la cuadrícula, mezcladas con elementos de vista de diseño de cuadrícula adecuados. En otras palabras, en lugar de usar milayout_grid.xml para el diseño de cada elemento en RecyclerView, obtengo elementos usando ellayout_list.xml diseño, pero en formato de cuadrícula.

Esto me dice que LayoutManager funciona correctamente, cambiando de una lista a un diseño de cuadrícula. Pero no todos los elementos de vista de elementos se recrean utilizando el diseño de cuadrícula xml, sino que se utilizan vistas de diseño de lista recicladas.

Lo intentéRecyclerView.removeAllViews(), RecyclerView.removeAllViewInLayout(), RecyclerView.swapAdapter() (para forzar la recarga del adaptador), todo en vano.

Actualizar:

Si desplazo dos posiciones hacia abajo en la lista, y luego cambio de la lista a la cuadrícula, las dos primeras posiciones no pasan por onCreateViewHolder (), sino directamente por onBindViewHolder () y, por lo tanto, no se ven obligados a usar el diseño de cuadrícula xml. En cambio, esos dos primeros elementos de posición se reciclan (creo) y se muestran en su formato de diseño de lista.

Respuestas a la pregunta(7)

Su respuesta a la pregunta