一次仅显示一个可扩展列表的子项

Posted

技术标签:

【中文标题】一次仅显示一个可扩展列表的子项【英文标题】:Show only one child of expandable list at a time 【发布时间】:2011-12-13 07:50:27 【问题描述】:

是否可以一次只展开ExpandableListView 的一个孩子,从而打开第二个孩子会关闭之前打开的孩子?

【问题讨论】:

【参考方案1】:

只是为了在代码中确认 bos 的答案:

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

        @Override
        public void onGroupExpand(int groupPosition) 
            if(groupPosition != previousGroup)
                expandableList.collapseGroup(previousGroup);
            previousGroup = groupPosition;
        
    );

【讨论】:

太棒了...谢谢兄弟。 完美的一个。谢谢 当用户组展开事件触发时,我们能否获得组视图 不应该 "int previousGroup = -1" 是 "int previousGroup = 0" 吗? @Ahsan 否,因为0 是列表中的有效位置,所以当你开始时没有“前一组”,因此 -1 是正确的,0 是不正确的【参考方案2】:

我不知道有任何自动方法可以实现这一点,但您可以实现ExpandableListView.OnGroupClickListener,在其中为所有列表组运行collapseGroup(),除了被单击的组。这会做你想做的。

【讨论】:

更好的是,使用ExpandableListView.OnGroupExpandListener 类。此外,您可以跟踪最后一个展开的组,并在下一个展开时将其折叠(以防止在任意数量的列表项上调用 collapseGroup() 谢谢大家,今晚我会试试你的建议! 只是想跟进这个建议非常有效,我只是跟踪最后一个扩展组并在扩展下一个要扩展的组之前关闭它!谢谢老板和杰森!【参考方案3】:

您也可以简单地使用 FastAdapter 中的withOnlyOneExpandedItem()

在FastAdapter External Library@mikepenz

例如,当我在抽屉中使用它时

drawer.getAdapter().withOnlyOneExpandedItem(true);

【讨论】:

据我所知 ExpandableListVeiw 中没有这样的方法。 对不起,我忘记了我正在阅读的源代码是针对外部库的,如果对它感兴趣,也可以在这里链接github.com/sathishmscict/FastAdapter/blob/master/library/src/…【参考方案4】:

您可以根据需要在列表扩展中使用它来满足各种条件 -

      expList.setOnChildClickListener(new OnChildClickListener() 
        
         @Override
         public boolean onChildClick(ExpandableListView parent, View v,
           int childGroupPosition, int childPosition, long id) 

        // Log.e("OnChildClickListener", "OK "+childGroupPosition+"  "+childPosition);javainterviewquestion
             if(childGroupPosition ==0 && childPosition == 0)
             

             
             if(childGroupPosition ==0 && childPosition == 1)
             

              

          return false; 
         
        );

【讨论】:

以上是关于一次仅显示一个可扩展列表的子项的主要内容,如果未能解决你的问题,请参考以下文章

Angularjs:从使用 ng-repeat 创建的表中一次仅扩展一个表行

可扩展的列表视图子项动态计数

Xamarin 表单中具有不同子项的可扩展 ListView

当父母在Android中折叠时如何更改可扩展列表视图子项的视图?

GridView在android中的可扩展列表中

如何在可扩展列表视图 Kotlin 中获取标题中的子项计数