在可展开列表视图中展开所有子项


74

我想在填充可扩展列表视图时扩展所有子级。目前,我的代码如下所示:

ExpandableListView listView = (ExpandableListView) findViewById(R.id.view);
int count = viewAdapted.getGroupCount();
for (int position = 1; position <= count; position++)
    listView.expandGroup(position - 1);

这很丑。有更好的方法吗?



显然,这是目前唯一的解决方案。希望有一些属性或类似的东西。
2011年

当然(位置<=计数)...复制过去的错字
Drejc

@Drejc:您能选择正确的答案吗?
贾斯汀

有...但是它被删除了
Drejc 15'Dec

Answers:


76

您可以在自定义适配器的getGroupView中将其展开:

@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    View v = super.getGroupView(groupPosition, isExpanded, convertView, parent);
    ExpandableListView mExpandableListView = (ExpandableListView) parent;
    mExpandableListView.expandGroup(groupPosition);
    return v;
}

l!


12
这使它们无法点击
David Lawson

2
@DavidLawson:是的,我的解决方案是固定扩展它们。如果要扩展它们并单击它们,则必须处理创建ExpandableListView的过程,例如Drejc的解决方案。
贾斯汀

37

将此代码放在适配器上会使扩展列表保持打开状态,并禁用其关闭功能。

ExpandableListView mExpandableListView = (ExpandableListView) parent;
mExpandableListView.expandGroup(groupPosition);

这可能需要一些解决,但应该如何进行。它会打开所有组(在开始时),并且可以随时关闭

 for ( int i = 0; i < groupList.getCount(); i++ ) {
    groupList.expandGroup(i);
 } 

注意:在可扩展视图上设置适配器后,请将此代码放入,否则可能会导致错误。希望能帮助到你。



6

扩大所有群体

for(int i=0; i < myAdapter.getGroupCount(); i++)
    myExpandableListView.expandGroup(i);

如果您想使它们不可折叠。

myExpandableListView.setOnGroupClickListener(new OnGroupClickListener() {
  @Override
  public boolean onGroupClick(ExpandableListView parent, View v,int  groupPosition, long id) { 
    return true; 
  }
});

0

我已经尝试了列出的响应,但发现可以使用getGroupCount()方法获取组数。

使用这种方法,我可以迭代并扩展我的每一组 ExpandableListView

for (int i = 0; i < myExpandableListView.getExpandableListAdapter().getGroupCount(); i++) {
      //Expand group
      myExpandableListView.expandGroup(i);
 }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.