Каков наилучший подход для асинхронной загрузки данных из SQLite в Android ListView?

Я новичок в Android и успешно реализовал ArrayAdapter для отображения списка простых объектов в ListView. Я также создал класс, который расширяет SQLiteOpenHelper, и я хотел бы использовать его для отображения списка строк из базы данных в ListView.

Из того, что я могу сказать, кажется, что я должен использовать Loader для асинхронного запроса данных и выступать в качестве посредника между моими данными и пользовательским интерфейсом.

Документация Loader и CursorLoader относится только к тому, как добиться этого при запросе ContentProvider. Это заставило меня подумать, что лучшим подходом может быть создание ContentProvider, который предоставляет структурированный интерфейс для моей базы данных, но в документации Android по созданию ContentProvider говорится:

Вам не нужен провайдер для использования базы данных SQLite, если она полностью используется в вашем собственном приложении.

Есть ли особые причины, по которым мне не следует писать ContentProvider? Если я что-то не упустил, похоже, что это обеспечит хорошую абстракцию для уровня данных и означает, что я могу получить все преимущества использования CursorLoader при его использовании.

В моем случае база данных предназначена только для использования моим приложением. Итак, какие существуют альтернативы и есть ли хорошие учебные пособия, показывающие процесс от начала до конца?

Спасибо!


person Matt Wilson    schedule 09.01.2014    source источник
comment
см. этот stackoverflow.com/questions/11017646/   -  person pskink    schedule 09.01.2014
comment
вы можете использовать курсорный загрузчик, даже если ваша база данных не обернута в ContentProvider   -  person Daniel Bo    schedule 09.01.2014
comment
@pskink - Спасибо, я сейчас прочитаю это подробнее. Мне кажется странным, что вы должны написать свой собственный подкласс CusorLoader. Это кажется очень обычной вещью, которую люди хотели бы.   -  person Matt Wilson    schedule 09.01.2014
comment
@ Даниэль - как так? Кажется, что загрузчик курсора требует URI, который имел бы смысл только с ContentProvider?   -  person Matt Wilson    schedule 09.01.2014
comment
@MattWilson, так что лучше написать ContentProvider, может быть, немного больше усилий, но это окупается.   -  person pskink    schedule 09.01.2014
comment
@pskink это было мое мнение - кажется, это неплохой способ сделать это, поскольку это обеспечит хорошую структуру? Я думаю, я боюсь, что кажется неправильным прямо идти против совета о том, чтобы не создавать ContentProvider для частных данных.   -  person Matt Wilson    schedule 09.01.2014
comment
ContentProvider также помогает поддерживать актуальность курсоров при вставке, удалении и обновлении sqlitedb.   -  person pskink    schedule 09.01.2014