RecyclerView: como limpar vistas em cache / recicladas?

Eu uso um RecyclerView para exibir uma lista de itens com um layout de lista. Alterno de um layout de lista para um layout de grade, mostrando apenas um subconjunto de todos os dados quando no layout de grade. Essa opção usa um XML de layout diferente do que quando o layout da lista é apresentado.

Tudo isso funciona bem, exceto que quando eu rolar, as visualizações de layout de lista recicladas (armazenadas em cache?) Preenchem a grade, combinadas com os itens de exibição de layout de grade adequados. Em outras palavras, em vez de usar o meulayout_grid.xml para o layout de cada item no RecyclerView, recebo itens usando olayout_list.xml layout, mas em um formato de grade.

Isso me diz que o LayoutManager está funcionando corretamente, alternando de uma lista para o layout da grade. Mas nem todos os itens da exibição do item são recriados usando o layout xml da grade, mas as visualizações do layout da lista reciclada são usadas.

eu tenteiRecyclerView.removeAllViews(), RecyclerView.removeAllViewInLayout(), RecyclerView.swapAdapter() (para forçar a recarga do adaptador), tudo sem sucesso.

Atualizar:

Se eu rolar duas posições para baixo na lista e depois mudar da lista para a grade, as duas primeiras posições não passarão por onCreateViewHolder (), mas direto para onBindViewHolder () e, portanto, não serão forçadas a usar o xml de layout da grade. Em vez disso, esses dois primeiros itens de posição são reciclados (eu acho) e exibidos em seu formato de layout de lista.

questionAnswers(7)

yourAnswerToTheQuestion