ПОВНИЙ КОД ПОСТАЧАЛЬНИКА ВМІСТУ: ПОСТАЧАЛЬНИК SIMPLEFINCHVIDEOCONTENTPROVIDER в Android додатку

&nbsp

Тепер, коли ми поговрорілі про важливих завданнях, повязаних з написанням постачальника вмісту із застосуванням патерну «Модель-вид-контролер» в Android (тобто про систему обміну інформацією, яка використовується постачальниками вмісту в Android), розглянемо, як написати власний постачальник вмісту Клас SimpleFinchVideoContentProvider успадковується ContentProvider так:

Клас SimpleFinchVideoContentProvider і змінні примірників

Як звичайно, краще спочатку розібратися з основними змінними класів, використовуваними методом, а потім вивчати, як цей метод працює Для роботи з Sim pi eFinchVideoContentProvider нам знадобиться освоїти наступні члени класу:

DATABASE_NAME – імя файлу бази даних, розташованої на пристрої У випадку з простим відеопріложеній Finch шлях до файлу бази даних буде таким: / data / data / comoreillydemopa finchvideo / databases / simplej / ideodb

DATABASE_VERSION – версія бази даних, що відповідає цьому коду Якщо номер вище, ніж версія самої бази даних, то додаток викликає метод DatabaseHelperonUpdate

VIDEO_TABLE_NAME – імя таблиці відео, що знаходиться всередині бази даних sіmplе_video

mOpenHelper – мінлива допоміжної утиліти бази даних Така змінна ініціалізується під час роботи методу onCreate Цей помічник забезпечує доступ до бази даних для методів іnsert, query, update і del ete

sUriMatcher – статичний блок ініціалізації, в якому здійснюється ініціалізація статичних змінних, якщо ці змінні не вдається ініціалізувати в одному рядку Наприклад, робота нашого простого постачальника відео починається з додавання відповідностей вмісту, йоставщіка і URI в UriMatcher, ось так:

Клас UriMatcher є базовою утилітою, використовуваної в Android для відображення URI постачальників вмісту Для застосування примірника цього класу його потрібно заповнити відображеннями рядка URI, наприклад videos, на константу Наше відображення діє таким чином Спочатку додаток передає аргумент, UriMatcherNO_MATCH, конструктору класу UriMatcher, що відноситься до постачальника вмісту, щоб визначити значення, відповідне ситуації, в якій заданий URI не збігається ні з одним наявним URI Потім додаток додає відображення для безлічі відео до константи VIDEOS, а потім – відображення конкретного відеоролика до константи VIDEO_ID При відображенні всіх URI постачальника вмісту на цілочисельне значення, постачальник вмісту може застосувати оператор switch для переходу до коду, використовуваному для обробки декількох відеофайлів або одного відеофайлу

В результаті цього процесу такий URI, як content :/ / com oreillydemopa finch video SimpleFinchVideo / video, асоціюється з константою VIDEOS, відповідної всім відеофайлами URI окремої відеозапису, наприклад content :/ / oreilly demo pa fіnchvideo Simple FinchVideo/video/7, асоціюється з константою VIDEO_ID, що відповідає одному відеофайлу Хеш-символ (#) наприкінці обнаружителя збігів URI – Це джокерний символ для будь-якого URI, що закінчується на ціле число

sVideosProjectionMap – проекційний контейнер, використовуваний в методі запиту Цей HashMap асоціює імена стовпців постачальника вмісту з іменами стовпців бази даних Користуватися проекційним контейнером не обовязково, але якщо він застосовується, то, в ньому повинні міститися всі імена стовпців, які можуть бути повернуті в запиті У випадку з SimpleFinchVideoContentProvider імена стовпців постачальника вмісту і бази даних ідентичні, тому sVideosProjectionMap не потрібно Але ми покажемо приклади додатків, де такий контейнер потрібний У наступному коді створюється приклад проекційного асоціювання:

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*