Можно ли только развернуть один дочерний элемент ExpandableListView
за один раз, таким образом, открытие второго ребенка закроет ранее открытый ребенок?
Показывать только одного ребенка расширяемого списка за раз
Ответ 1
Я не знаю никаких автоматических методов для этого, но вы можете реализовать ExpandableListView.OnGroupClickListener
, где вы запускаете collapseGroup()
для всех групп списков, кроме тех, которые были нажаты. Это сделает то, что вы хотите.
Ответ 2
Только для подтверждения ответа bos в коде:
expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
int previousGroup = -1;
@Override
public void onGroupExpand(int groupPosition) {
if(groupPosition != previousGroup)
expandableList.collapseGroup(previousGroup);
previousGroup = groupPosition;
}
});
Ответ 3
Также вы можете просто использовать withOnlyOneExpandedItem()
, который находится в FastAdapter
который находится в Внешняя библиотека FastAdapter от mikepenz
Например, когда я использую его в своем ящике
drawer.getAdapter().withOnlyOneExpandedItem(true);
Ответ 4
вы можете использовать это для различных условий, которые вы хотите сделать в расширении списка -
expList.setOnChildClickListener(new OnChildClickListener()
{
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int childGroupPosition, int childPosition, long id) {
// Log.e("OnChildClickListener", "OK "+childGroupPosition+" "+childPosition);javainterviewquestion
if(childGroupPosition ==0 && childPosition == 0)
{
}
if(childGroupPosition ==0 && childPosition == 1)
{
}
return false;
}
});