Подтвердить что ты не робот

CursorLoader, получить URI для локальной базы данных

Я новичок программист на Android, и недавно я познакомился с учебником, в котором показано, как создать локальную базу данных SQLite, а затем получить доступ к базе данных с помощью SQLiteDatabase.rawQuery, чтобы вернуть курсор. Я хотел бы изменить мое приложение, чтобы использовать CursorLoader, который, по-видимому, является лучшим способом доступа к базе данных. Моя проблема заключается в том, что конструктор CursorLoader ожидает предоставления URI. Я просто вводю "файл:///[путь к db]"? Кажется немного грязным.

4b9b3361

Ответ 1

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

Поэтому я предлагаю создать контент-провайдер, который внутренне использует вашу базу данных, чтобы вы могли напрямую использовать класс CursorLoader.

Преимущество использования поставщика контента заключается в том, что он инкапсулирует ваши данные лучше, и вы можете легко использовать много авизо от android напрямую.

Вот несколько руководств о том, как создать поставщика контента.

http://developer.android.com/guide/topics/providers/content-provider-creating.html

http://thinkandroid.wordpress.com/2010/01/13/writing-your-own-contentprovider/

Если вы решили не создавать ContentProvider, вы можете расширить AsyncTaskLoader или загрузчик курсора непосредственно, чтобы запросить данные так, как вы хотите.

Ответ 2

Взгляните на библиотеку CommonsWare LoaderEx. Он позволяет использовать Loader с локальным SQLiteDatabase, поэтому вам не нужно беспокоиться о создании собственного ContentProvider.