Android ExpandableListView SimpleCursorTreeAdapter запускается пусто будет зависать - PullRequest
0 голосов
/ 17 июня 2011

Я пишу приложение для Android (нацелено на Android версии 2.1 и выше).Я использую ExpandableListView с SimpleCursorTreeAdapter.Я нахожу, что произойдет сбой, следуя этой последовательности:

  1. ExpandableListView запускается пустым (то есть нет соответствующих записей в базе данных).
  2. Записи добавлены.
  3. Вернитесь к экрану с помощью ExpandableListView.Теперь группы показаны.
  4. Нажмите на группу, чтобы развернуть ее, действие будет принудительно закрыто.

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

Итак, мой способ сейчас выглядит так: создает экземпляр SimpleCursorTreeAdapter только при наличии соответствующей записи в базе данных.Если нет, повторите попытку во время OnResume().

. Мне (или другим бедным парням, имеющим ту же проблему) было бы полезно, если у кого-то есть более веская причина аварии или есть лучшее решение.(Я склонен полагать, что это ошибка в платформе Android.)

1 Ответ

0 голосов
/ 17 июня 2011

Попробуйте следующее.Создайте экземпляр адаптера в onCreate (), но передайте значение null в качестве аргумента курсора.В onResume () вы затем создаете новый Cursor и передаете его адаптеру, используя changeCursor () .Этим вы всегда получаете новый курсор всякий раз, когда вы что-либо изменяете (добавляете, удаляете, редактируете строку) в вашей модели данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...