Многоуровневый ExpandableListView?

Нужно реализовать в приложении многоуровневый ExpandableListView. Без галочек и прочего, простой раскрывающийся список с обработкой клика по конечному пункту. Уровней много не будет (2-3, максимум 4), но данные в него подгружаются с сервера и количество может соответственно меняться со временем, а приложение должно быть готово к этому.


Существует ли какое-нибудь готовое решение для этой задачи? Может быть кто-то сталкивался, какая-то библиотека или пример реализации? В принципе, интересно было бы даже внешне посмотреть, как это видят другие люди.
  • Вопрос задан
  • 5377 просмотров
Пригласить эксперта
Ответы на вопрос 1
erakitin
@erakitin
Сталкивался с подобной задачей, нужно было вывести дерево устройств со скрытием/раскрытием дочерних узлов. Долго искал готовое решение, но ничего подходящего так и не смог найти. Решил проблему очень просто, используя ListView, правда еще пришлось написать класс-обертку с методами для работы с деревом и расширить класс узла дополнительными полями (уровень вложенности; флаг, указывающий на скрытость/раскрытость узла).

Теперь перейдем к алгоритму.
1. Рекурсивным обходом дерева собираем ArrayList из раскрытых узлов, не забывая указывать уровень вложенности узлам, затем скармливаем этот ArrayList адаптеру.
2. В методе getView адаптера выставляем содержимому вьюшки отступ слева, пропорциональный уровню вложенности (или используем другой layout, для вложенных узлов, или еще как-то выделяем вложенные узлы).
3. По клику на иконку скрытия/раскрытия узла высталяем этому узлу соответствующий флаг. Затем, делаем все то же самое, что и в пункте 1, только не забывам вызвать метод notifyDataSetChanged() нашего адаптера.

Надеюсь, данная информация будет полезной.
Ответ написан
Ваш ответ на вопрос

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

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