В приложении под Android использую список, который использует данные из базы данных. Сейчас использую AsyncTaskLoader. Но он автоматом не подгружает новые данные. Поддерживает ли автоматическое обновление ContentProvider в связке с CursorAdapter? Есть ли смысл на него переходить?
-
Да, реализовывал ContentProvider в связке с CursorAdapter 2 дня назад, всё обновляется как надо!– v.j.melnikov17 фев 2014 в 11:24
-
@ua6xh, вручную вызывали notifyDataSetChanged или ContentProvider присылал новую порцию данных самостоятельно?– Lucky_spirit17 фев 2014 в 11:37
-
@Lucky_spirit - готово– v.j.melnikov12 мар 2014 в 8:26
Добавить комментарий
|
2 ответа
Поддерживает ли автоматическое обновление ContentProvider в связке с CursorAdapter? Есть ли смысл на него переходить?
Да, автоматическое обновление поддерживается. Имеет полный смысл переходить. И более того это рекомендованный паттерн. Это намного лучше чем всякие разные костыли.
-
-
@Barmaley ♦, я уже перешёл и очень доволен. Избежал очень многих проблем. Например, решился доступ к базе из разных потоков. Точнее, теперь у меня прямого доступа и нет. База открыта самим контент провайдером. 18 апр 2014 в 11:27
-
-
![alt text][1] @Barmaley ♦ - Как так, если вопрос задал @Lucky_spirit? Это какие-то особые права на смену лучшего ответа? Или баг? [1]: i.imgur.com/LCOqSGJ.png 18 апр 2014 в 12:05
-
@ua6xh нет, это на правах модератора - баллы за это деяние не начисляются. Если у вас убыло, могу компенсировать потери.– Barmaley18 апр 2014 в 12:57
@Lucky_spirit - Как я понял, это работает так: в query
мы подписываемся:
cursor.setNotificationUri(getContext().getContentResolver(), CIRCLE_CONTENT_URI);
В методах delete
, insert
, update
уведомляем:
getContext().getContentResolver().notifyChange(resultUri, null);
-
@ua6xh.Такая же проблема возникла (с уведомлением). Вы говорите: > В методах delete, insert, update уведомляем: а что произойдет в момент уведомления? Как поймать этот момент и обновить необходимые мне данные?– Мария_118 апр 2014 в 9:27
-
@Мария_1 - Когда вызовется метод:
getContext().getContentResolver().notifyChange(resultUri, null);
на экране произойдет перестроение списка 18 апр 2014 в 9:29 -
-
@ua6xh наверное правильно...А списка это например ListView вы имеете ввиду?– Мария_118 апр 2014 в 9:37
-
@Мария_1 - да, ListView. Если будут вопросы по контент провидеру - пишите на прямую, мои контакты есть в профиле. 18 апр 2014 в 9:43