以编程方式折叠ExpandableListView中的组

56 android expandablelistview

当我扩展一个新组时,我可以将最后一个扩展掉吗?

dan*_*h32 122

试着把它放在你的身上ExpandableListAdapter,listView是对ExpandableListView自己的一种参考.并且lastExpandedGroupPosition是在你的内部定义的整数成员变量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;
    }
Run Code Online (Sandbox Code Playgroud)

  • 您的解决方案存在问题:新扩展组将滚动到最后一组(已关闭)的高度.但无论如何,谢谢. (4认同)
  • 哇男人,现货!:) 非常感谢你!:d (3认同)
  • 没问题.这是一段时间的应用程序.很高兴它可以帮助别人. (2认同)

coc*_*edo 21

非常有帮助,但正如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;
}
Run Code Online (Sandbox Code Playgroud)


Sat*_*ish 17

对我有用

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)