Android: CursorLoader, LoaderManager, SQLite

Попытка обновить мое старое приложение, в котором некоторые методы устарели. Я узнал, что если я хочу работать с ListView, который показывает данные из db, я должен использовать LoaderManager + CursorLoader. CursorLoader работает с контент-провайдерами. Итак, для каждой таблицы в моем db я должен создать контент-провайдера сейчас? Почему я должен ? Насколько я знаю, контент-провайдеры используются для обмена некоторой информацией db с другими приложениями, но мое приложение не предоставляет никакой информации. Могу ли я использовать CursorLoader без поставщиков контента?

Solutions Collecting From Web of "Android: CursorLoader, LoaderManager, SQLite"

Я написал сообщение в блоге по этому вопросу. Вы также можете проверить этот ответ для получения дополнительной информации. Надеюсь, это уберет вас.

Как отметил Барак, можно реализовать CursorLoader без поставщиков контента, расширив AsyncTaskLoader<Cursor> . Тем не менее, большинство учебных пособий и пример кода используют ContentProvider s, и похоже, что команда Android поощряет ее использование. Это также намного менее сложно, чем реализация собственного класса.

Тем не менее, если вы действительно не хотите использовать контент-провайдеров, Dianne Hackborn (один из разработчиков платформы Android, также известный как «hackbod» здесь, на SO) предлагает написать собственный загрузчик, который использует ваш класс базы данных вместо контента поставщик. Самый простой способ – просто взять исходный CursorLoader класса CursorLoader из библиотеки совместимости и заменить запросы поставщиков запросами на свой собственный класс-помощник db.

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

Просто загляните в образцы из файла android sdk для LoaderCustomSupport.java в образцах и демонстрационных файлах совместимости.