Ведь state_emptyвы можете установить другое изображение, которое не сбивает с толку, или просто использовать прозрачный цвет, чтобы ничего не отображать ...
Добавьте этот элемент в свой объект с отслеживанием состояния вместе с другими ....
Не работает: Проверено в Android 4.0.2 (ICS). Смотрите другие ответы на этот вопрос на этой странице. Похоже, Android считает неразвернутую группу пустой. Просто установите индикатор группы на прозрачный, затем добавьте imageView в строку своей группы и в методе адаптера getGroupView установите для него нужный значок.
Fraggle
1
Этот код тоже не работает у меня (проверено на Android 4.4). Нерасширенная группа считается пустой (без дочерних), поэтому для значка установлен цветной / прозрачный.
Guicara 05
1
Спасибо за код, но это похоже на шутку: такой сложный код для такой простой задачи?
Антонио Сесто
1
Трудно поверить, что этот ответ получил столько «полезных» и наград, хотя документально подтверждено, что свернутые группы считаются пустыми из соображений производительности!
3c71
41
Основываясь на ответе StrayPointer и коде из блога, вы можете еще больше упростить код:
В вашем xml добавьте в ExpandableListView следующее:
Используя метод setImageResource, вы все делаете однострочно. Вам не нужны три целочисленных массива в вашем адаптере. Вам также не нужен селектор XML для развернутого и свернутого состояния. Все делается через Java.
Кроме того, этот подход также отображает правильный индикатор при расширении группы по умолчанию, что не работает с кодом из блога.
Как упоминалось в другом ответе, поскольку Android рассматривает группу нерасширенного списка как пустую, значок не отображается, даже если у группы есть дочерние элементы.
По сути, вы должны установить по умолчанию для рисования как прозрачный, переместить его в представление группы как ImageView и переключить изображение в вашем адаптере.
Ответы:
Попробуйте это >>>
для всех предметов
В xml
источник
android:groupIndicator
Свойство принимает состояние включена вытяжку. То есть вы можете установить разные изображения для разных состояний.Когда у группы нет дочерних элементов, соответствующее состояние - 'state_empty'.
См. Эти справочные ссылки:
это и это
Ведь
state_empty
вы можете установить другое изображение, которое не сбивает с толку, или просто использовать прозрачный цвет, чтобы ничего не отображать ...Добавьте этот элемент в свой объект с отслеживанием состояния вместе с другими ....
Итак, ваш список состояний может быть таким:
Если вы используете ExpandableListActivity, вы можете установить групповой индикатор в onCreate следующим образом:
Я проверил, что это работает.
источник
Основываясь на ответе StrayPointer и коде из блога, вы можете еще больше упростить код:
В вашем xml добавьте в ExpandableListView следующее:
Затем в Адаптере вы делаете следующее:
Используя метод setImageResource, вы все делаете однострочно. Вам не нужны три целочисленных массива в вашем адаптере. Вам также не нужен селектор XML для развернутого и свернутого состояния. Все делается через Java.
Кроме того, этот подход также отображает правильный индикатор при расширении группы по умолчанию, что не работает с кодом из блога.
источник
getGroupView()
методе вашейBaseExpandableListAdapter
реализации. Взгляните на этот пример реализации .ViewHolder
выкройку.indicator
это имя переменной держателя представления.Как упоминалось в другом ответе, поскольку Android рассматривает группу нерасширенного списка как пустую, значок не отображается, даже если у группы есть дочерние элементы.
Эта ссылка решила проблему для меня: http://mylifewithandroid.blogspot.com/2011/06/hiding-group-indicator-for-empty-groups.html
По сути, вы должны установить по умолчанию для рисования как прозрачный, переместить его в представление группы как ImageView и переключить изображение в вашем адаптере.
источник
В вашем коде просто используйте пользовательский xml для списка групп и поместите ImageView для GroupIndicator .
И добавьте ниже массивы в свой ExpandableListAdapter
также в методе ExpandableListAdapter добавьте те же вещи, что и ниже
Ссылка: http://mylifewithandroid.blogspot.in/2011/06/hiding-group-indicator-for-empty-groups.html
источник
В XML
В
ExpandableListAdapter
->getGroupView
скопируйте следующий кодисточник
это может быть другой способ от XML, установите
android:groupIndicator="@null"
Ссылка для ссылки: https://stackoverflow.com/a/5853520/2624806
источник
Предлагаю вам свое решение:
1) Очистить groupIndicator по умолчанию:
2) в ExpandableAdapter:
источник
Просто хотел улучшить ответ Михира Триведи. Вы можете разместить это в getGroupView () внутри класса MyExpandableListAdapter.
... а что касается представления макета, так выглядит мой group_items.xml
Надеюсь, это поможет ... не забудьте оставить свой голос
источник
Используйте это, он отлично работает для меня.
источник
Вы пытались изменить
ExpandableListView
атрибутandroid:groupIndicator="@null"
?источник
Просто вы создаете новый макет xml с высотой = 0 для заголовка скрытой группы. Например, это 'group_list_item_empty.xml'
Тогда ваш обычный макет заголовка группы будет 'your_group_list_item_file.xml'
Наконец, вы просто обновляете метод getGroupView в своем классе адаптера:
ВАЖНО : корневой тег файлов макета (скрытый и обычный) должен быть другим (как в примере выше, LinearLayout и RelativeLayout).
источник
convertView.setVisibility (View.GONE) должен помочь.
источник