Android, как вы кодируете сейчас, если запрос устарел? - PullRequest
7 голосов
/ 23 августа 2011

согласно теме. Если раньше мы вызывали cursor.requery (), но теперь это устарело, как вы теперь вызываете эту функцию?

"Этот метод устарел. Не используйте это. Просто запросите новый курсор, чтобы вы могли делать это асинхронно и обновлять представление списка после возвращения нового курсора. "

Так как же запросить новый курсор и передать его обратно адаптеру?

Ответы [ 4 ]

2 голосов
/ 23 августа 2011

Просто подумайте о блоке, где вам нужно снова и снова использовать курсор.Заполните его запросом.Работайте с ним, а затем закройте перед повторным использованием

{
    Cursor c =//Populating cursor again
    while (c.moveToNext()) {
    }
    if (c != null) c.close();
}
2 голосов
/ 23 августа 2011

снова повторно инициализирует курсор при выполнении любого DML-запроса, может ссылаться на this

1 голос
/ 23 августа 2011

Используйте Loader для управления курсорами.При необходимости он вернет новый курсор, и вы можете использовать swapCursor() на адаптере для обновления данных.

0 голосов
/ 01 октября 2013

Я использовал ListAdapter.notifyDataSetChanged () ;это работало только для списка (например, ArrayList), когда список изменялся.Используя выход базы данных, он больше не работает.Поэтому я взял cursor.requery (); , который не только ограничен.Это также работает, только если записи базы данных изменились.

Но теперь я хочу изменить свое представление (переключение между днями рождения и датами), изменив мои настройки в базе данных, поэтому запрос не распознает его.

Для всех изменений работает (немного грязно): this.onCreate (null);

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