RecyclerView: как очистить кэшированные / переработанные представления?

Я использую RecyclerView для отображения списка элементов с макетом списка. Я переключаюсь с макета списка на макет сетки, показывая только подмножество всех данных в макете сетки. Этот переключатель использует другой формат XML, чем при представлении списка.

Все это работает хорошо, за исключением того, что когда я прокручиваю, переработанные (кэшированные?) Представления макета списка заполняют сетку, смешиваясь с соответствующими элементами представления макета сетки. Другими словами, вместо того, чтобы использовать мойlayout_grid.xml для макета каждого элемента в RecyclerView, я получаю элементы, используяlayout_list.xml макет, но в виде сетки.

Это говорит мне, что LayoutManager работает правильно, переключаясь с списка на макет сетки. Но не все элементы представления элементов воссоздаются с использованием XML-макета сетки, а используются переработанные представления макета списка.

Я старалсяRecyclerView.removeAllViews(), RecyclerView.removeAllViewInLayout(), RecyclerView.swapAdapter() (для принудительной перезагрузки адаптера), все безрезультатно.

Обновить:

Если я прокручиваю две позиции вниз в списке, а затем переключаюсь из списка в сетку, первые две позиции не проходят через onCreateViewHolder (), а направляются прямо в onBindViewHolder () и, следовательно, не вынуждены использовать XML-формат сетки. Вместо этого эти первые две позиции перерабатываются (я думаю) и отображаются в формате их списка.

Ответы на вопрос(7)

Ваш ответ на вопрос