Я использую RecyclerView для отображения списка элементов с макетом списка. Я переключаюсь с макета списка на макет сетки, показывая только подмножество всех данных, когда в макете сетки. Этот коммутатор использует другой формат XML, чем когда представлен макет списка.
Все это хорошо работает, за исключением того, что когда я просматриваю, просмотры макетов переработанных (кэшированных?) элементов заполняют сетку, смешанную с соответствующими элементами представления сетки. Другими словами, вместо использования моего layout_grid.xml
для каждого макета элемента в RecyclerView я получаю элементы с использованием макета layout_list.xml
, но в формате сетки.
Это говорит мне, что LayoutManager работает правильно, переключение из списка в макет сетки. Но не все элементы представления элементов воссозданы с использованием макета xml grid, но используются просмотры макетов переработанного списка.
Я пробовал RecyclerView.removeAllViews()
, RecyclerView.removeAllViewInLayout()
, RecyclerView.swapAdapter()
(чтобы перезагрузить адаптер), все безрезультатно.
Update:
Если я прокручу две позиции вниз в списке и затем перейду из списка в сетку, первые две позиции не пройдут через onCreateViewHolder(), а прямо на onBindViewHolder() и поэтому не будут вынуждены использовать сетку xml, Вместо этого эти первые две позиции позиции перерабатываются (я думаю) и отображаются в их формате макета списка.