У меня есть список, поддерживаемый адаптером курсора. Однако, когда я иду, чтобы внести изменения в базе данных на фоне синхронизации, то приложение падает с следующим:Android: сбой в ListView CursorAdapter при изменении базы данных?
java.lang.IllegalStateException: couldn't move cursor to position 0
at android.support.v4.widget.CursorAdapter.getView(CursorAdapter.java:248)
at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:232)
at android.widget.AbsListView.obtainView(AbsListView.java:2842)
at android.widget.ListView.makeAndAddView(ListView.java:1884)
at android.widget.ListView.fillSpecific(ListView.java:1364)
at android.widget.ListView.layoutChildren(ListView.java:1671)
at android.widget.AbsListView.onLayout(AbsListView.java:2632)
Кроме того, данные я добавляю очищает базу данных и не вставляет никаких данных вообще. Я смущен, поскольку я думал, что курсор асинхронен с базой данных.
Аварийная ситуация возникает между окончанием синхронизации и при отправке широковещательной передачи уведомляет о завершении синхронизации. Приемник широковещательной передачи даже не получает широковещательную передачу.
Мой вопрос: как я могу многопоточно это? То есть, как я могу очистить и изменить базу данных, а затем обновить курсор после активности после завершения синхронизации?
использовать notifydatasetchanged() метод после изменения данных вместо этого вручную – dileep
Я не совсем уверен, что вы подразумеваете под «Я, хотя курсор был асинхронным к базе данных», если вы хотите обновить таблицу в одном потоке, пока продолжая отображать список, всегда безопаснее использовать ContentProviders и Loaders. – e4c5