1

В приложении под Android использую список, который использует данные из базы данных. Сейчас использую AsyncTaskLoader. Но он автоматом не подгружает новые данные. Поддерживает ли автоматическое обновление ContentProvider в связке с CursorAdapter? Есть ли смысл на него переходить?

3
  • Да, реализовывал ContentProvider в связке с CursorAdapter 2 дня назад, всё обновляется как надо! 17 фев 2014 в 11:24
  • @ua6xh, вручную вызывали notifyDataSetChanged или ContentProvider присылал новую порцию данных самостоятельно? 17 фев 2014 в 11:37
  • @Lucky_spirit - готово 12 мар 2014 в 8:26

2 ответа 2

2

Поддерживает ли автоматическое обновление ContentProvider в связке с CursorAdapter? Есть ли смысл на него переходить?

Да, автоматическое обновление поддерживается. Имеет полный смысл переходить. И более того это рекомендованный паттерн. Это намного лучше чем всякие разные костыли.

5
  • @Barmaley ♦ С этим как раз разбираюсь) Нужен для виджета.. 18 апр 2014 в 10:25
  • @Barmaley ♦, я уже перешёл и очень доволен. Избежал очень многих проблем. Например, решился доступ к базе из разных потоков. Точнее, теперь у меня прямого доступа и нет. База открыта самим контент провайдером. 18 апр 2014 в 11:27
  • Не забывайте про CursorLoader!
    – Barmaley
    18 апр 2014 в 11:54
  • ![alt text][1] @Barmaley ♦ - Как так, если вопрос задал @Lucky_spirit? Это какие-то особые права на смену лучшего ответа? Или баг? [1]: i.imgur.com/LCOqSGJ.png 18 апр 2014 в 12:05
  • @ua6xh нет, это на правах модератора - баллы за это деяние не начисляются. Если у вас убыло, могу компенсировать потери.
    – Barmaley
    18 апр 2014 в 12:57
2

@Lucky_spirit - Как я понял, это работает так: в query мы подписываемся:

cursor.setNotificationUri(getContext().getContentResolver(), CIRCLE_CONTENT_URI);

В методах delete, insert, update уведомляем:

getContext().getContentResolver().notifyChange(resultUri, null);
7
  • @ua6xh.Такая же проблема возникла (с уведомлением). Вы говорите: > В методах delete, insert, update уведомляем: а что произойдет в момент уведомления? Как поймать этот момент и обновить необходимые мне данные? 18 апр 2014 в 9:27
  • @Мария_1 - Когда вызовется метод: getContext().getContentResolver().notifyChange(resultUri, null); на экране произойдет перестроение списка 18 апр 2014 в 9:29
  • @Мария_1 - может быть я вас не правильно понял? 18 апр 2014 в 9:35
  • @ua6xh наверное правильно...А списка это например ListView вы имеете ввиду? 18 апр 2014 в 9:37
  • @Мария_1 - да, ListView. Если будут вопросы по контент провидеру - пишите на прямую, мои контакты есть в профиле. 18 апр 2014 в 9:43

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.