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

时间:2011-10-22 20:32:22

标签: android expandablelistview expandablelistadapter

是否有可能一次只展开一个ExpandableListView的孩子,因此打开第二个孩子会关闭之前打开的孩子?

4 个答案:

答案 0 :(得分:133)

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

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

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

答案 1 :(得分:36)

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

答案 2 :(得分:0)

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

在mikepenz的FastAdapter External Library

例如,我在抽屉中使用它

drawer.getAdapter().withOnlyOneExpandedItem(true);

答案 3 :(得分:-5)

您可以在扩展列表时使用它来实现各种条件 -

      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; 
         }
        });