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