Множественный менеджер компоновки в объединенном адаптере

#android #android-recyclerview

Вопрос:

Я хочу реализовать КонкатАдаптер, подобный этому изображению:

введите описание изображения здесь

Просмотр вторичной переработки этой страницы содержит следующие элементы:

  • Название
  • Горизонтальный просмотр вторсырья (с разбиением на страницы)
  • Название
  • Вертикальный просмотр вторсырья (без разбиения на страницы)
  • Название
  • Горизонтальный просмотр вторсырья (с разбиением на страницы)

Но проблема в том, что я могу установить только один LayoutManager для RecyclerView, который, как я знаю, содержит ConcatAdapter.

Как установить разные layoutmanager для каждого адаптера? Или любое другое решение для реализации этой страницы с помощью CocantAdapter?

(Почему КонкатАдаптер? Потому что это создает проблемы с производительностью nestedRecyclerView даже с recyclerViewPool, как я знаю)

Комментарии:

1. Адаптер Конкат действительно примитивен, он просто переназначает позиции элементов в содержащиеся адаптеры. Вы не можете использовать его в этом случае.

Ответ №1:

К сожалению, это невозможно. RecyclerView Адаптер-это всего лишь компонент для предоставления и привязки представлений для каждой строки. A ConcatAdapter ничем не отличается, он просто перенаправляется с отдельных адаптеров.

Если бы у него был какой-либо контроль над менеджерами компоновки , он действительно уничтожил бы весь смысл модульности RecyclerView , что в первую очередь делает его таким мощным.

Вы можете взглянуть на исходный код здесь, чтобы узнать больше о том, как он реализован.

Комментарии:

1. Спасибо, @генри. Так в чем же решение? Как я могу реализовать его, чтобы он был плавным и эффективным?

2. Ну, у меня никогда не было проблем с производительностью из-за горизонтальной RecyclerView вложенности. Боюсь, что я не знаю решения, которое позволило бы обоим вашим горизонтальным макетам совместно использовать пул представлений!

Ответ №2:

Простое решение — создать пул представлений в Действии/Фрагменте. Адаптер для просмотра вторсырья содержит 2 различных типа элементов, обычный и другой, в котором на самом деле есть просмотр вторсырья с горизонтальной компоновкой в качестве адаптера.

Таким образом, держатель просмотра, который содержит переработанный просмотр внутри со своими собственными держателями просмотра.

Затем вы просто берете созданный пул просмотра из действия, чтобы назначить его в качестве общего пула для всех адаптеров с горизонтальной прокруткой, вот и все 🙂

Адаптер Конкат не помогает в этом, я боюсь, что это будет моим альтернативным решением