В настоящее время я работаю над проектом, в котором мне нужно что-то вроде следующего:
- 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
- так что 3 уровня ExpandableListView
:
MainGroup
будут содержать только другие ExpandableListView
. Подгруппа
будет содержать другие ExpandableListView
, за исключением двух последних, которые всегда будут просто ChildView
. (Я думаю, что эти два могут быть просто заменены одним для SubSubGroup
) SubSubGroup
всегда будет содержать ChildViews
. Моя проблема в том, что я не понимаю основных принципов того, как ExpandableListView
размещает своих дочерних элементов. Я просмотрел такие примеры, как , этот , но не могу понять функциональность.
Я пробовал просто добавить ExpandableListView
в качестве дочернего в другой, но что-то не работает, так как если вы развернете его, отображается только первый элемент внутреннего ExpandableListView
внешних групп. Однако я могу, установив высоту контейнера внешних групп вручную, сделать его достаточно большим, чтобы отображались все элементы во внутреннем ExpandableListView
.Для достижения оптимального результата расчет высоты, конечно же, должен производиться «на лету».
Итак, чтобы перейти к более серьезным вопросам:
ExpandableListView
(под этим я подразумеваю мгновенное использование, повторное использование представлений, развертывание / свертывание слушателей), включая:
ExpandableListView
уведомляется о том, что дочерний элемент развернут / свернут? ExpandableListView
узнает, сколько места чтобы все дочерние элементы поместились в контейнер группы? ExpandableListView
для создания описанного выше, по сравнению с простым смешиванием моего собственного решения с использованием некоторых LinearLayouts
и некоторые OnClickListeners
? Edit
На мой последний вопрос я могу отметить, что может быть от 1 до 20+ MainGroups
.