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