1

扩展组时,我有一个ExpandableListView并执行一些操作:

    @Override
public void onGroupExpanded(int groupPosition) {
    super.onGroupExpanded(groupPosition);
    p = (RelativeLayout)activity.findViewById(R.id.pers);
    p.setVisibility(View.GONE);
    ExpandableListView elw = (ExpandableListView) activity
            .findViewById(android.R.id.list);

    if (groupPosition != lastExpandedGroupPosition) {
        elw.collapseGroup(lastExpandedGroupPosition);
    }
    lastExpandedGroupPosition = groupPosition;

}

我需要RelativeLayout在所有组折叠时(或没有组展开时)设置可见。如何检测到所有组当前都已折叠?

4

1 回答 1

1

您有两个等效的选择:

  1. 实现ExpandableListAdapter方法:onGroupCollapsed(int groupPosition)onGroupExpanded(int groupPosition)ExandableListView的适配器。

  2. 添加自定义OnGroupCollapseListener并将它们分别通过和OnGroupExpandListener附加到可扩展列表视图。setOnGroupCollapseListener()setOnGroupExpandListener()

在这两个选项中,您基本上想要做的是跟踪当前扩展了哪些组。一个好方法是将它们保留为Set<Integer>. 当一个组被折叠时,您可以从该组中删除它的 ID。同样,当扩展组时,您将其 ID 添加到此集合中。每次添加/删除后,您检查集合的大小。如果它为空,则所有组都将折叠。如果不是 - 某些组被扩展。

据我所知,没有直接的方法可以找出哪些组被展开/折叠。

于 2013-02-06T15:57:57.103 回答