#android #kotlin #android-recyclerview #header
#Android #android-макет #котлин #android-recyclerview #Вид
Вопрос:
О нас
Я создаю макет приложения, которое может отображать заголовок внутри RecyclerView
, который имеет тот же стиль, что и Google Play Store.
Заголовок будет иметь :
TextView
расположенный в левом верхнем углу, который отображает ActivityNameImageButton
расположен в правом верхнем углу по центру с ActivityName, который раздувает другое действиеSeachView
расположенный в нижней частиTextView
иImageButton
- Раздел тегов, который заменит содержимое / элементы
RecyclerView
(я также не знаю, какая терминология или лучший вид / контейнер для использования)
Проблема
Я пытаюсь узнать, как использовать getItemViewType или как вставить все (4) вида, которые я хочу, в адаптер RecyclerView. Я уже просмотрел множество руководств и статей, но, к сожалению, нет четкого руководства, в котором рассказывалось бы о «обычном» способе создания заголовка внутри RecyclerView, который не требует внешних зависимостей.
Было бы большой помощью, если бы кто-нибудь мог показать мне четкую статью / руководство / способ в Kotlin, который может решить мою проблему, в которой не используются внешние библиотеки.
Приложение
-
Видео Youtube о том, как мой заголовок будет действовать в заголовке RecyclerView ссылка на видео
-
Ссылка на заголовок, Эталонное изображение Google Play Store
-
Желаемый заголовок Изображение заголовка желаемого приложения
Ответ №1:
То, что вы ищете, можно довольно легко сделать с помощью нового ConcatAdapter:
val adapterList = mutableListOf<RecyclerView.Adapter<*>>()
.apply {
add(HeaderAdapter())
add(TitleAdapter("Items"))
add(ItemsAdapter())
add(TitleAdapter("Crates"))
add(CratesAdapter())
}
adapter = ConcatAdapter(adapterList)
Предлагаемый альтернативный формат:
adapter = ConcatAdapter(
HeaderAdapter(),
TitleAdapter("Items"),
ItemsAdapter(),
TitleAdapter("Crates"),
CratesAdapter())
Обратите внимание, что adapter
это относится к вашей переменной RecyclerView.
Для TitleAdapter
и HeaderAdapter
вы просто создаете адаптер с getItemCount() = 1
и желаемым видом в его ViewHolder.
Комментарии:
1. Хотя это может дать мне представление о моей проблеме с тегами. Я думаю, что это не будет действовать так, как я ожидал.
2. Пожалуйста, посмотрите видео на YouTube, предоставленное по ссылке.
3. Я посмотрел видео перед ответом, и сейчас тоже. Я не понимаю, в чем проблема или почему это не сработает. Можете ли вы уточнить? Если вас что-то смущает, я могу прояснить это еще больше.
4. Сможет ли ConcatAdapter следить за движением прокрутки, как показано здесь, в ссылке? gif
5. меня беспокоит, возможен ли этот метод при реализации верхнего и нижнего колонтитулов для приложения. в то же время имея возможность изменять представления с помощью тега.