Можно ли только развернуть один дочерний элемент 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;
}
});