58

新しいグループを展開するときに、最後に展開したグループを折りたたむことはできますか?

4

5 に答える 5

122

これをあなたの中に入れてみてくださいExpandableListAdapter、それ自体listViewへの参照ExpandableListViewです。AndlastExpandedGroupPositionは、の内部で定義された整数のメンバー変数ですExpandableListAdapter

    @Override
    public void onGroupExpanded(int groupPosition){
        //collapse the old expanded group, if not the same
        //as new group to expand
        if(groupPosition != lastExpandedGroupPosition){
            listView.collapseGroup(lastExpandedGroupPosition);
        }

        super.onGroupExpanded(groupPosition);           
        lastExpandedGroupPosition = groupPosition;
    }
于 2010-11-30T15:06:16.377 に答える
23

非常に役立ちましたが、Anh Tuanが上記のコメントで述べているように、ExpandableListViewが現在選択されているグループの先頭にスクロールバックしないという問題がありました(現在スクロールされている位置、グループの中央のどこかに留まります) 。また、正しい位置にスクロールするには、onGroupClickListener()を追加する必要があります。

@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition,
        long id) {
    // Implement this method to scroll to the correct position as this doesn't
    // happen automatically if we override onGroupExpand() as above
    parent.smoothScrollToPosition(groupPosition);

    // Need default behaviour here otherwise group does not get expanded/collapsed
    // on click
    if (parent.isGroupExpanded(groupPosition)) {
        parent.collapseGroup(groupPosition);
    } else {
        parent.expandGroup(groupPosition);
    }

    return true;
}
于 2012-11-09T09:55:02.743 に答える
17

これは私のために働いた

expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
    int previousItem = -1;

    @Override
    public void onGroupExpand(int groupPosition) {
        if(groupPosition != previousItem )
            expandableList.collapseGroup(previousItem );
        previousItem = groupPosition;
    }
});
于 2013-07-11T06:39:30.977 に答える
4

これを行うと、クリックしたグループを展開し、他のすべてを折りたたむことができます

public void onGroupExpand(int groupPosition)
{
    for (int i = 0; i < len; i++)
    {
        if (i != groupPosition)
        {
            expandableListDetailsLevel.collapseGroup(i);
        }
    }
}

それは私のために働いています。

于 2012-10-22T09:48:46.847 に答える
2
    @Override
    public void onGroupExpanded(int groupPosition) {
        for(int i=0;i<mGroupCollection.size();i++){
            if(i==groupPosition){
                System.out.println("Nothing");
                         }
            else{
                   mExpandableListView.collapseGroup(i);
            }

        }
        super.onGroupExpanded(groupPosition);
    }
于 2012-12-17T13:58:58.530 に答える