Подтвердить что ты не робот

Показывать только одного ребенка расширяемого списка за раз

Можно ли только развернуть один дочерний элемент ExpandableListView за один раз, таким образом, открытие второго ребенка закроет ранее открытый ребенок?

4b9b3361

Ответ 1

Я не знаю никаких автоматических методов для этого, но вы можете реализовать ExpandableListView.OnGroupClickListener, где вы запускаете collapseGroup() для всех групп списков, кроме тех, которые были нажаты. Это сделает то, что вы хотите.

Ответ 2

Только для подтверждения ответа bos в коде:

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

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

Ответ 3

Также вы можете просто использовать withOnlyOneExpandedItem(), который находится в FastAdapter

который находится в Внешняя библиотека FastAdapter от 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; 
         }
        });