Поскольку RecyclerView использует ViewHolders, это означает, что у вас должен быть предопределенный макет для каждой строки. Но что, если каждая строка должна отображать переменное количество просмотров?RecyclerView с неизвестными/переменными строками строк
Например, я создаю приложение для обмена мгновенными сообщениями, в котором пользователи могут прикреплять изображения к сообщениям. Они могут прикрепляться от 0 до x изображений. Когда вы создаете RecyclerView для отображения этих изображений (загружаемых с сервера), как бы вы делали строки, содержащее правильное количество ImageViews для их отображения?
Есть несколько способов, которые я могу придумать, но ни один из них не кажется хорошим вариантом.
- Создайте ImageViews в onBindViewHolder, добавьте их в макет в ViewHolder. (Разве это не то, что пытается попытаться предотвратить ViewHolder? Это, вероятно, будет медленным, особенно с большим количеством фотографий)
- Ограничьте количество изображений, которые пользователь может прикрепить к сообщению, а затем добавьте x ImageViews в макет, который установлены на невидимые/ушли. В onBindViewHolder установите ImageViews для отображения изображения и установите эти ImageViews видимыми. (Что делать, если я разрешаю фотографии & видео, которые нужно вставить? Должен ли я затем добавить x ImageViews и x VideoViews?)
- Поместите GridView в каждый элемент RecyclerView и заполните GridView внутри onBindViewHolder. (Я предполагаю, что это не принесло бы пользы от вариант №1, потому что это почти то же самое?)
Это все, что я могу придумать. Есть ли другой вариант, который предназначен для такой ситуации, с которой я не сталкивался? Или каковы типичные подходы к этой проблеме?
Я знаю о разных типах просмотра в RecyclerView, но это не относится к моей проблеме. Типы просмотра предназначены для применения различных макетов к строкам, но все же предполагается, что строки имеют статические макеты. Мне нужно решение, в котором элементы RecyclerView имеют переменное количество просмотров в макете. – user7028506
Я вижу. Затем я пошёл бы со своей второй предложенной идеей для этого, используя один зритель и показывающий/скрывающийся на основе содержимого строки, или я бы все же ограничивал количество изображений и видео, как в идее 2, но создавал отдельные зрители, представляющие возможные комбинации. –