可展开的ListView

7

我正在使用可扩展的ListView进行UI设计,因此我想知道对于Android可扩展的ListView,是否有一种方法只允许一个列表项展开,即当您单击并展开一个项目时,所有其他项目都会自动折叠。

谢谢


1
使用以下答案编程折叠可扩展列表视图中的组:https://dev59.com/kW855IYBdhLWcg3wfUVM - Londeren
1
我在另一个问题中放置了一些代码,可以实现你所需要的功能:https://dev59.com/kW855IYBdhLWcg3wfUVM#4315162 - danh32
3个回答

10

当你点击一个项目时,你可以循环遍历其余的项目,并折叠除了刚刚点击的那个之外的每一个项目...

list.setOnGroupExpandListener(new OnGroupExpandListener() {

    public void onGroupExpand(int groupPosition) {
        int len = mAdapter.getGroupCount();

        for(int i=0; i<len; i++) {
            if(i != groupPosition) {
                list.collapseGroup(i);
            }
        }
    }

});

1

你可以像kieran建议的那样做,或者如果你一次只打开一个,你可以仅跟踪你上次单击的是哪个。你可以通过在类体中声明int lastclicked,然后在监听器中按照Korean的建议,放置list.collapseGroup(lastclicked)来实现这一点。

我想给出一个代码示例,但我现在用的是手机。抱歉。

但我个人更喜欢上次单击的方法,而不是使用for循环。它看起来更有效率。


0
首先,在您的Activity中实现OnGroupExpandListener,这将允许您添加其默认方法。在添加了该默认方法之后,您需要按照以下方式操作:
@Override
    public void onGroupExpand(int groupPosition) {
        // TODO Auto-generated method stub
        int len = expadapter.getGroupCount();           
        for(int i=0;i<len;i++)
        {
            if(i!=groupPosition)
            {
                expandlst.collapseGroup(i);
            }
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接