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

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


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

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

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

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

Войти через центр авторизации
Похожие вопросы