Реализация поставщиков контента

Реализация поставщиков контента

К этому моменту уже известно, как взаимодействовать с поставщиком контента для обработки данных, но пока еще не было показано, как написать поставщик контента. А для этого нужно расширить класс android.content.ContentProvider и реализовать следующие ключевые методы:

query

insert

update

delete

getType

Но перед этим необходимо обеспечить еще несколько моментов. Мы продемонстрируем все детали реализации поставщика контента, описав необходимые для этого шаги.

  1. Планирование базы данных, URI, имен столбцов и т.д. и создание класса метаданных, который определяет константы для всех этих элементов метаданных.
  2. Расширение абстрактного класса ContentProvider.
  3. Реализация методов query, insert, update, delete и getType.
  4. Регистрация поставщика в файле манифеста.

Планирование базы данных

Для демонстрации этой темы мы создадим базу данных, в которой будет храниться коллекция книг. Эта база книг содержит только одну таблицу с именем books и столбцами name, isbn и author. Указанные имена столбцов представляют собой метаданные, и они определяются в Java-классе. Такой Java-класс BookProviderMetaData с определениями метаданных приведен в листинге 4.5. Некоторые важные элементы этого класса выделены полужирным.

Этот класс BookProviderMetaData начинается с определения источника com.androidbook.provider.BookProvider. Мы собираемся использовать эту строку для регистрации поставщика в файле манифеста Android. Она образует первую часть URI для этого поставщика.

Затем этот класс определяет свою единственную таблицу (books) в виде внутреннего класса BookTableMetaData. Далее BookTableMetaData определяет URI для идентификации коллекции книг. Для источника из предыдущего абзаца URI коллекции книг будет выглядеть следующим образом:

content://com.androidbook.provider.BookProvider/books

Этот URI обозначается константой

BookProviderMetaData.BookTableMetaData.CONTENT URI

После этого класс BookTableMetaData определяет MIME-типы для коллекции книг и одиночной книги. Эти константы будут использованы в реализации поставщика для возврата MIME-типов для входящих URI.

Далее в классе BookTableMetaData определяется набор столбов: name (название), isbn (номер ISBN), author (автор), created (дата создания) и modified (дата последнего изменения).

На заметку! Типы данных для столбцов должны быть указаны в комментариях кода.

Кроме того, класс метаданных BookTableMetaData наследует от класса BaseColumns стандартное поле _id, представляющее идентификатор строки. Теперь, имея все эти определения метаданных, можно приступать к реализации поставщика.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Добавить комментарий