在expandable listview android中折叠除选定组之外的所有组

Sat*_*ish 61 expand android expandablelistview collapse

我正在使用可扩展列表视图开发android应用程序.其实我需要的是,我正在列出包含孩子的群组.

如果我选择一个不可扩展的组,它应该展开,在我选择第二组后,第一组应该折叠.我做谷歌,但我找不到我想要的东西.请帮帮我.

use*_*414 193

将当前扩展的组位置存储在变量中.在onGroupExpanded中执行以下操作.

private int lastExpandedPosition = -1;
private ExpandableListView lv; //your expandable listview
...

lv.setOnGroupExpandListener(new OnGroupExpandListener() {

    @Override
    public void onGroupExpand(int groupPosition) {
            if (lastExpandedPosition != -1
                    && groupPosition != lastExpandedPosition) {
                lv.collapseGroup(lastExpandedPosition);
            }
            lastExpandedPosition = groupPosition;
    }
});
Run Code Online (Sandbox Code Playgroud)

  • @ user936414这使expandablelstview滚动到展开组的末尾或中间.有解决方案吗 (3认同)

Raj*_*ddy 28

使用此代码即可

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

    @Override
    public void onGroupExpand(int groupPosition) {
        if(groupPosition != previousItem )
            expandableList.collapseGroup(previousItem );
        previousItem = groupPosition;
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这种方法有缺陷。它不会滚动到展开的组的顶部,就像没有执行crashGroup调用那样。当展开的组低于折叠的组时,就是这种情况。如果未折叠旧组,则视图会滚动到展开的组所在的位置。知道如何解决吗? (2认同)

KOT*_*IOS 8

@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;
    }
Run Code Online (Sandbox Code Playgroud)


Has*_*req 5

如果 ExpandableListView 有 2 个以上的组:

expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
    @Override
    public void onGroupExpand(int groupPosition) {
        for (int g = 0; g < expandableListAdapter.getGroupCount(); g++) {
            if (g != groupPosition) {
                expandableListView.collapseGroup(g);
            }
        }
    }
});    
Run Code Online (Sandbox Code Playgroud)

它将折叠除单击的组之外的所有组。