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

2つの同等のオプションがあります。

  1. メソッドを実装しExpandableListAdapterます:onGroupCollapsed(int groupPosition)そしてonGroupExpanded(int groupPosition)あなたExandableListViewのアダプタの。

  2. カスタムOnGroupCollapseListenerとを追加し、とを介してそれぞれOnGroupExpandListener拡張可能なリストビューに添付します。setOnGroupCollapseListener()setOnGroupExpandListener()

これらのオプションの両方で、基本的に実行したいのは、現在展開されているグループを追跡することです。良い方法は、それらをとして保持することSet<Integer>です。グループが折りたたまれている場合は、このセットからそのIDを削除します。同様に、グループが展開されるとき、そのIDをこのセットに追加します。追加/削除するたびに、セットのサイズを確認します。空の場合、すべてのグループが折りたたまれます。そうでない場合-一部のグループが展開されます。

私の知る限り、どのグループが展開/折りたたまれているかを直接知る方法はありません。

于 2013-02-06T15:57:57.103 に答える