#android #android-recyclerview
Вопрос:
Я хочу реализовать КонкатАдаптер, подобный этому изображению:
Просмотр вторичной переработки этой страницы содержит следующие элементы:
- Название
- Горизонтальный просмотр вторсырья (с разбиением на страницы)
- Название
- Вертикальный просмотр вторсырья (без разбиения на страницы)
- Название
- Горизонтальный просмотр вторсырья (с разбиением на страницы)
Но проблема в том, что я могу установить только один LayoutManager для RecyclerView, который, как я знаю, содержит ConcatAdapter.
Как установить разные layoutmanager для каждого адаптера? Или любое другое решение для реализации этой страницы с помощью CocantAdapter?
(Почему КонкатАдаптер? Потому что это создает проблемы с производительностью nestedRecyclerView даже с recyclerViewPool, как я знаю)
Комментарии:
1. Адаптер Конкат действительно примитивен, он просто переназначает позиции элементов в содержащиеся адаптеры. Вы не можете использовать его в этом случае.
Ответ №1:
К сожалению, это невозможно. RecyclerView
Адаптер-это всего лишь компонент для предоставления и привязки представлений для каждой строки. A ConcatAdapter
ничем не отличается, он просто перенаправляется с отдельных адаптеров.
Если бы у него был какой-либо контроль над менеджерами компоновки , он действительно уничтожил бы весь смысл модульности RecyclerView
, что в первую очередь делает его таким мощным.
Вы можете взглянуть на исходный код здесь, чтобы узнать больше о том, как он реализован.
Комментарии:
1. Спасибо, @генри. Так в чем же решение? Как я могу реализовать его, чтобы он был плавным и эффективным?
2. Ну, у меня никогда не было проблем с производительностью из-за горизонтальной
RecyclerView
вложенности. Боюсь, что я не знаю решения, которое позволило бы обоим вашим горизонтальным макетам совместно использовать пул представлений!
Ответ №2:
Простое решение — создать пул представлений в Действии/Фрагменте. Адаптер для просмотра вторсырья содержит 2 различных типа элементов, обычный и другой, в котором на самом деле есть просмотр вторсырья с горизонтальной компоновкой в качестве адаптера.
Таким образом, держатель просмотра, который содержит переработанный просмотр внутри со своими собственными держателями просмотра.
Затем вы просто берете созданный пул просмотра из действия, чтобы назначить его в качестве общего пула для всех адаптеров с горизонтальной прокруткой, вот и все 🙂
Адаптер Конкат не помогает в этом, я боюсь, что это будет моим альтернативным решением