У меня есть ListActivity
, который использует SimpleCursorAdapter
для отображения содержимого базы данных. У меня возникают проблемы при обновлении представления при изменении базовой базы данных.
В качестве эксперимента я добавил вызов Cursor.requery()
в onResume()
действия для отладки, поэтому все, что мне нужно сделать, это переключиться на другое действие и вернуться назад, и оно должно вызвать обновление. Я также переопределил onContentChanged()
для отладки. Оказывается, вызывается requery()
, но это не приводит к вызову onContentChanged()
.
Я подозреваю, что курсор использует устаревшие кэшированные данные. Операция, которая вызывает изменение, фактически включает в себя стирание и замену всей базы данных. Вместо того, чтобы просто запрашивать, я думаю, что мне нужно выбросить курсор и восстановить его с нуля.
Я пытался закрыть и снова открыть базовую базу данных в сочетании с Cursor.requery()
, но курсор, похоже, не любит, когда db вытаскивают из-под ног вот так. (Список заканчивается пустым.)
Редактировать: Я также пытался позвонить adapter.notifyDataSetChanged()
вместе с requery()
в onResume()
, но это не имеет значения.
Любой совет?