一次仅显示一个可扩展列表的子项
Posted
技术标签:
【中文标题】一次仅显示一个可扩展列表的子项【英文标题】:Show only one child of expandable list at a time 【发布时间】:2011-12-13 07:50:27 【问题描述】:是否可以一次只展开ExpandableListView
的一个孩子,从而打开第二个孩子会关闭之前打开的孩子?
【问题讨论】:
【参考方案1】:只是为了在代码中确认 bos 的答案:
expandableList.setOnGroupExpandListener(new OnGroupExpandListener()
int previousGroup = -1;
@Override
public void onGroupExpand(int groupPosition)
if(groupPosition != previousGroup)
expandableList.collapseGroup(previousGroup);
previousGroup = groupPosition;
);
【讨论】:
太棒了...谢谢兄弟。 完美的一个。谢谢 当用户组展开事件触发时,我们能否获得组视图 不应该 "int previousGroup = -1" 是 "int previousGroup = 0" 吗? @Ahsan 否,因为0
是列表中的有效位置,所以当你开始时没有“前一组”,因此 -1 是正确的,0 是不正确的【参考方案2】:
我不知道有任何自动方法可以实现这一点,但您可以实现ExpandableListView.OnGroupClickListener
,在其中为所有列表组运行collapseGroup()
,除了被单击的组。这会做你想做的。
【讨论】:
更好的是,使用ExpandableListView.OnGroupExpandListener
类。此外,您可以跟踪最后一个展开的组,并在下一个展开时将其折叠(以防止在任意数量的列表项上调用 collapseGroup()
。
谢谢大家,今晚我会试试你的建议!
只是想跟进这个建议非常有效,我只是跟踪最后一个扩展组并在扩展下一个要扩展的组之前关闭它!谢谢老板和杰森!【参考方案3】:
您也可以简单地使用 FastAdapter 中的withOnlyOneExpandedItem()
在FastAdapter External Library@mikepenz
例如,当我在抽屉中使用它时
drawer.getAdapter().withOnlyOneExpandedItem(true);
【讨论】:
据我所知 ExpandableListVeiw 中没有这样的方法。 对不起,我忘记了我正在阅读的源代码是针对外部库的,如果对它感兴趣,也可以在这里链接github.com/sathishmscict/FastAdapter/blob/master/library/src/…【参考方案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;
);
【讨论】:
以上是关于一次仅显示一个可扩展列表的子项的主要内容,如果未能解决你的问题,请参考以下文章
Angularjs:从使用 ng-repeat 创建的表中一次仅扩展一个表行
Xamarin 表单中具有不同子项的可扩展 ListView