Скрыть возможность рисования для расширяемого списка, когда нет дочерних элементов

#android #expandablelistview

#Android #расширяемый список просмотра

Вопрос:

Найдено несколько похожих вопросов, но нет ответов, которые работают. Прямо сейчас я делаю это:

 private ExpandableListView elv;
elv.setGroupIndicator(getResources().getDrawable(R.drawable.expandable_list_icon_selector));
  

expandable_list_icon_selector.xml:

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_empty="true" android:drawable="@android:color/transparent"/>
</selector>
  

К сожалению, это скрывает индикатор для всех групп, даже если они не пусты. Похоже, что когда группа не расширяется, Android считает ее пустой. Какие-нибудь советы? Спасибо.

Ответ №1:

Я сделал что-то похожее на вашу задачу — показать пользовательский индикатор группы рядом с названием группы только для некоторых групп. Я сделал это, сначала скрыв индикатор группы вообще, используя метод setGroupIndicator(null) . Затем я внедрил подкласс BaseExpandableListAdapter и внутри getGroupView() метода я показывал или скрывал свое собственное изображение индикатора на основе моей логики. Вы можете использовать такой подход, если он все еще актуален. Надеюсь, я вам помог.

Ответ №2:

Вот ссылка на рабочий пример скрытия возможности рисования для расширяемого списка, когда нет дочерних элементов.

Надеюсь, это поможет вам…

http://mylifewithandroid.blogspot.in/2011/06/hiding-group-indicator-for-empty-groups.html

Спасибо…

Ответ №3:

РЕДАКТИРОВАТЬ: этот метод не работает по дизайну (исходный код).

Вы пытались добавить непустое состояние?

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_empty="true"
          android:state_expanded="false"
          android:drawable="@android:color/transparent"/>
    <item android:drawable="@drawable/some_image"/>
</selector>
  

Комментарии:

1. Да, я пробовал это. Он покажет индикатор, когда список будет расширен, но снова скроет его, когда я закрою список.

2. О, извините, я допустил ошибку в коде. Исправлено. Итак, идея заключалась в том, чтобы добавить возможность рисования для файла с непустым состоянием. Возможность рисования для пустого состояния должна быть прозрачной.

3. Да, я понял, что ты имел в виду. Возможность рисования для непустого состояния отображается только при расширении списка.

4. Я просмотрел ExpandableListView исходный код и обнаружил, что ExpandableListView использует разное состояние в зависимости от того, пуста группа или нет. Я думаю, необходимо явно объявить, что мы хотим прозрачную возможность рисования только для пустых свернутых групп. Итак, я снова исправил свой ответ.

5. Я добавил код в xml и по-прежнему не отображается, когда список закрыт. Кроме того, когда «открыты» пустые родительские элементы, для них также отображается возможность рисования. Есть еще идеи? Я ценю помощь.

Ответ №4:

У меня была похожая проблема, и я решил ее следующим образом:

 if(explistView != null){
     explistView.setIndicatorBounds(0, 0);
}
  

Ответ №5:

*

 in getGroupView() method of adapter  use 

if ( getChildrenCount( groupPosition ) == 0 ) {
       indicator.setVisibility( View.INVISIBLE );
    } 
else {`enter code here`
       indicator.setVisibility( View.VISIBLE );
       indicator.setImageResource( isExpanded ? R.drawable.group_expanded : R.drawable.group_closed );
    }
  

*