aakumykov
@aakumykov
Начинающий Android-разработчик

Android: как правильно организовать комментарии под статьёй?

Всем привет. Я - начинающий Android-разработчик (самоучка). Делаю приложение, в котором есть "посты" и комментарии под ними. Встретился с принципиальными проблемами организации такого типа страниц, прошу совета.

Задача: создать страницу, в верхней части которой находится статья, под ней произвольное число комментариев. Всё это должно прокручиваться единым блоком.

Варианты решений:

ListView под статьей
Если поместить блок со статьей и ListView под ним внутрь ScrollView , комментарии будут прокручиваться внутри блока ListView, статья при этом не будет уходить наверх, потому что ListView на экране имеет фиксированную высоту (вычисленную при первой отрисовке). Можно отслеживать прокрутку в списке и динамически менять параметры разметки, но этот метод сбоит, ибо зависит от скорости свайпа...

Статья в header-элементе ListView
В ScrollView помещается ListView, а в его header динамически добавляется блок со статьёй.
Лучший вариант на текущий момент: страница прокручивается естественно, небольшой хак - внедрение блока в заголовок. Недостатки:
* ListView объявлен устаревшим, а в RecyclerView нет элемента header (его придётся эмулировать).
* "перевёрнутость" концепции: статья внутри списка комментариев, а не комментарии внутри статьи.

LinearLayout вместо ListView
ScrollView + LinearLayout, первый элемент которого это статья, а ниже "вручную" добавляются комментарии.
Достоинства: естественная прокрутка, автоматическое увеличение высоты LinearLayout по мере добавления комментариев. Недостатки: приходится самому реализовывать функционал, обеспечиваемый адаптером списка (добавление/изменение/удаление элементов).

Вопрос: есть ли способ создать разметку "статья-комментарии" с управлением списком комментариев через адаптер и с "естественной" прокруткой страницы; без хаков вроде внедрения блока в заголовок ListView или программного скроллинга.

p.s. Можно сказать: "Используй фреймворки, бро". Но я учусь и хочу знать всю механику, поэтому делаю многие вещи с нуля.
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Берешь RecyclerView. Берешь либу AdapterDelegates от Ханнеса Дорфмана. Делаешь два вида элементов. Профит.

Про листвью забываешь, будто его никогда не существовало. Про добавление неопределенного количества вьюх в любой лэйаут кроме RecyclerView забываешь.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
KuSu
@KuSu
Android разработчик
Вариант "Статья в header-элементе ListView" наиболее правильный. Только делаешь RecyclerView, и объявляешь в нем 2 типа разметки - один для статьи и один для комментария.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы