В настоящее время я работаю над проектом, в котором мне нужно что-то вроде следующего:
- MainGroup 1 (Expandable)
- SubGroup 1 (Expandable)
- SubSubGroup 1 (Expandable)
- Child View
- Child View
- ...
- SubSubGroup 2 (Expandable)
- Child View
- Child View
- ...
- SubGroup 2 (Expandable)
- SubSubGroup 3 (Expandable)
- Child View
- ...
- SubSubGroup 4 (Expandable)
- Child View
- ...
- SubGroup 3 (Expandable)
- Child View
- ...
- MainGroup 2 (Expandable)
- ...
В лучшем случае ExpandableListView внутри ExpandableListView внутри ExpandableListView будет ExpandableListView - так что 3 слоя ExpandableListView:
-
MainGroupбудет содержать только другойExpandableListView. -
SubGroupбудет содержать другиеExpandableListView, за исключением последних двух, которые всегда будутChildViews. (Я думаю, что эти два могут быть заменены только наSubSubGroup) -
SubSubGroupвсегда будет содержатьChildViews.
Моя проблема в том, что я думаю, что не понимаю основных принципов того, как макеты ExpandableListView это дети. Я просмотрел такие примеры, как , но не могу окунуться в функциональность.
Я попробовал просто добавить ExpandableListView в качестве дочернего в другое, но что-то не работает, поскольку только первый элемент внутреннего ExpandableListView отображается, если вы расширяете одну из внешних групп. Однако я могу установить высоту контейнера внешних групп вручную, чтобы сделать его достаточно большим, чтобы показать все элементы во внутреннем ExpandableListView. Чтобы быть оптимальным, расчет высоты должен, конечно, выполняться "на лету".
Итак, чтобы получить более серьезные вопросы:
- Может кто-нибудь дать мне объяснение жизненного цикла
ExpandableListView"(под этим я подразумеваю создание, повторное использование представлений, расширение/сбой слушателей), в том числе:- Как и когда
ExpandableListViewуведомляется о том, что дочерний элемент расширен или скомпенсирован? - Как
ExpandableListViewзнает, сколько места сделать, чтобы все дети вписывались в контейнер группы?
- Как и когда
- Какая польза от использования
ExpandableListViewдля создания выше, по сравнению с просто смешиванием моего собственного решения с использованием некоторыхLinearLayoutsи некоторыхOnClickListeners?
Edit
Для моего последнего вопроса я мог бы заметить, что может быть от 1 до 20+ MainGroups.