【发布时间】:2011-12-13 07:50:27
【问题描述】:
是否可以一次只展开ExpandableListView 的一个孩子,从而打开第二个孩子会关闭之前打开的孩子?
【问题讨论】:
标签: android expandablelistview expandablelistadapter
是否可以一次只展开ExpandableListView 的一个孩子,从而打开第二个孩子会关闭之前打开的孩子?
【问题讨论】:
标签: android expandablelistview expandablelistadapter
只是为了在代码中确认 bos 的答案:
expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
int previousGroup = -1;
@Override
public void onGroupExpand(int groupPosition) {
if(groupPosition != previousGroup)
expandableList.collapseGroup(previousGroup);
previousGroup = groupPosition;
}
});
【讨论】:
0 是列表中的有效位置,所以当你开始时没有“前一组”,因此 -1 是正确的,0 是不正确的
我不知道有任何自动方法可以实现这一点,但您可以实现ExpandableListView.OnGroupClickListener,在其中为所有列表组运行collapseGroup(),除了被单击的组。这会做你想做的。
【讨论】:
ExpandableListView.OnGroupExpandListener 类。此外,您可以跟踪最后一个展开的组,并在下一个展开时将其折叠(以防止在任意数量的列表项上调用 collapseGroup()。
您也可以简单地使用 FastAdapter 中的withOnlyOneExpandedItem()
在FastAdapter External Library@mikepenz
例如,当我在抽屉中使用它时
drawer.getAdapter().withOnlyOneExpandedItem(true);
【讨论】:
您可以根据需要在列表扩展中使用它来满足各种条件 -
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;
}
});
【讨论】: