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

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

【问题讨论】:

    标签: android expandablelistview expandablelistadapter


    【解决方案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);
    

    【讨论】:

    【解决方案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; 
             }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      相关资源
      最近更新 更多