Android: как правильно организовать комментарии под статьёй?
Всем привет. Я - начинающий Android-разработчик (самоучка). Делаю приложение, в котором есть "посты" и комментарии под ними. Встретился с принципиальными проблемами организации такого типа страниц, прошу совета.
Задача: создать страницу, в верхней части которой находится статья, под ней произвольное число комментариев. Всё это должно прокручиваться единым блоком.
Варианты решений:
ListView под статьей
Если поместить блок со статьей и ListView под ним внутрь ScrollView , комментарии будут прокручиваться внутри блока ListView, статья при этом не будет уходить наверх, потому что ListView на экране имеет фиксированную высоту (вычисленную при первой отрисовке). Можно отслеживать прокрутку в списке и динамически менять параметры разметки, но этот метод сбоит, ибо зависит от скорости свайпа...
Статья в header-элементе ListView
В ScrollView помещается ListView, а в его header динамически добавляется блок со статьёй.
Лучший вариант на текущий момент: страница прокручивается естественно, небольшой хак - внедрение блока в заголовок. Недостатки:
* ListView объявлен устаревшим, а в RecyclerView нет элемента header (его придётся эмулировать).
* "перевёрнутость" концепции: статья внутри списка комментариев, а не комментарии внутри статьи.
LinearLayout вместо ListView
ScrollView + LinearLayout, первый элемент которого это статья, а ниже "вручную" добавляются комментарии.
Достоинства: естественная прокрутка, автоматическое увеличение высоты LinearLayout по мере добавления комментариев. Недостатки: приходится самому реализовывать функционал, обеспечиваемый адаптером списка (добавление/изменение/удаление элементов).
Вопрос: есть ли способ создать разметку "статья-комментарии" с управлением списком комментариев через адаптер и с "естественной" прокруткой страницы; без хаков вроде внедрения блока в заголовок ListView или программного скроллинга.
p.s. Можно сказать: "Используй фреймворки, бро". Но я учусь и хочу знать всю механику, поэтому делаю многие вещи с нуля.
Вариант "Статья в header-элементе ListView" наиболее правильный. Только делаешь RecyclerView, и объявляешь в нем 2 типа разметки - один для статьи и один для комментария.