Това е втората част от серията Android Calendar Provider. Можете да прочетете първата част тук.

По-рано в първата част направихме просто приложение за Android, което изброява календарите на потребителя. Сега ще добавим нова функционалност за изброяване на събития в календар.

Къде е изходният код?



tl;dr

В Android всеки календар може да има множество събития. Събитията са достъпни чрез вградената таблица на доставчика на съдържание с име CalendarContract.Events.

Ето крайния резултат от приложението, което изброява събития от потребителски календар:

Първо изброяваме календарите, които са налични на потребителското устройство. След това, ако щракнете върху един от календарите, това ще ни отведе до нова страница, която изброява събития за този конкретен календар.

Има много колони, които можете да извлечете от таблицата на събитията. Използвах обаче само някои от тях, изброени тук:

  1. TITLE: Заглавието на събитието
  2. EVENT_LOCATION: Мястото на събитието
  3. STATUS: Статус на събитието (Предварително, Потвърдено или Отменено)
  4. DTSTART: Часът, в който започва събитието
  5. DTEND: Времето на края на събитието
  6. DURATION: Продължителността на събитието във формат RFC2445
  7. ALL_DAY: Дали събитието се провежда цял ден или не
  8. AVAILABILITY: Дали събитието се счита за натоварено или свободно време
  9. RRULE: Правилото за повторение на събитието
  10. DISPLAY_COLOR: Цветът на дисплея на събитието (използва цвета на календара, ако цветът на събитието е нулев)
  11. VISIBLE: Дали събитието е видимо или не

Обяснение стъпка по стъпка

Ще продължим оттам, откъдето спряхме в първата част на поредицата. След като приключите с обяснението стъпка по стъпка в първата част, направете следното:

1. Създайте нова дейност, като щракнете върху Файл › Нова › Дейност › Празна дейност. Назовете името на дейността “CalendarActivity” и името на оформлението “activity_calendar”. Кликнете върху Край.

2. Първо ще създадем оформленията. Вътре в новосъздадения activity_calendar.xml ще добавим RecyclerView. А за показване на елемента на RecyclerView ще създадем ново оформление с име item_event.xml. Ето как изглеждат и техните кодове:

3. Сега ще създадем модел за събитието, което ще бъде посочено в RecyclerView. Това ще бъде прост клас данни на Kotlin с име EventItem.kt. Ето как изглежда:

4. Преди да създадем адаптер, ще създадем прост помощен клас за четене на колоните на събитието, наречен CalendarUtil.kt. Имаме нужда от това за по-добро разбиране на стойностите, върнати от API на доставчика на календари. Ето как изглежда файлът:

5. След това ще създадем адаптер RecyclerView за събитията с име EventItemAdapter.kt. Ето как изглежда:

6. След това ще актуализираме съдържанието на CalendarActivity.kt. По принцип това, което правим тук, е да получим _ID от намерението на календара и след това да изведем списък на събитията за този календар. Ето как ще изглежда:

7. След това ще свържем всичко, което сме направили досега с файловете от предишната част на поредицата. Отворете item_calendar.xml и добавете android:id за основния елемент:

8. Също така трябва да редактираме CalendarItemAdapter.kt файла. Трябва да добавим слушател при щракване към основния елемент. Ако се щракне върху него, ще преминем към CalendarActivity.kt с параметъра на _ID на календара. Ето как изглежда CalendarItemAdapter.kt сега:

9. И накрая, ще редактираме MainActivity.kt малко по този начин:

10. И това е! Стартирайте приложението си и сега то трябва да изглежда така:

Както винаги, благодаря за четенето!