Я пишу приложение для Android (нацелено на Android версии 2.1 и выше).Я использую ExpandableListView
с SimpleCursorTreeAdapter
.Я нахожу, что произойдет сбой, следуя этой последовательности:
-
ExpandableListView
запускается пустым (то есть нет соответствующих записей в базе данных). - Записи добавлены.
- Вернитесь к экрану с помощью
ExpandableListView
.Теперь группы показаны. - Нажмите на группу, чтобы развернуть ее, действие будет принудительно закрыто.
После нескольких дней поиска в Интернете, а затем болезненного отслеживания моих приложенийsource, а затем источник платформы Android,
, похоже, что проблема заключается в следующем: когда платформа Android запускает Ithe SimpleCursorTreeAdapter
,
, он будет хранить список дочерних полей в приватном элементе mChildFrom
один раз во время создания экземпляра и (странно) в состоянии ТО , если есть хотя бы одна группа.Если нет записи (и, следовательно, нет группы), список дочерних полей не сохраняется.При последующем добавлении записей и при расширении группы до отображаемых дочерних строк ExpandableListView
завершится сбоем, поскольку закрытый член mChildFrom
имеет значение null.
Итак, мой способ сейчас выглядит так: создает экземпляр SimpleCursorTreeAdapter
только при наличии соответствующей записи в базе данных.Если нет, повторите попытку во время OnResume()
.
. Мне (или другим бедным парням, имеющим ту же проблему) было бы полезно, если у кого-то есть более веская причина аварии или есть лучшее решение.(Я склонен полагать, что это ошибка в платформе Android.)