766.95K
Категория: ПрограммированиеПрограммирование

Todo приложение. С использованием паттерна MVVM и БД Room

1.

Todo приложение
С использованием паттерна MVVM и БД Room

2.

В этом уроке мы опробуем реализацию
паттерна MVVM вместе с локальной базой данных
Room.

3.

Первым делом добавим зависимости в проект для локальной
базы данных и viewModel. Для этого в файле build.gradle.kts
(Module :App) в разделе plugins добавьте строку id("kotlin-kapt").
После чего нажмите кнопку sync now.

4.

После синхронизации в низу в разделе dependencies добавьте
следующие зависимости, после чего так же нажмите sync now.

5.

Приступим к написанию приложения. Наше приложение будет
состоять из 3 слоев согласно паттерну: domain, data, presentation

6.

Для удобства работы создайте 3 папки в самой верхней
com.example.todoapp – data, domain, presentation.
Это можно сделав: правой клавишей мыши на
com.example.todoapp –> New -> Package

7.

В диалоговом меню, ничего не стирая, после
com.example.todoapp после точки внесите наименование папки на
английском языке. Создайте 3 папки с наименованиями data,
domain, presentation

8.

Domain-слой

9.

В Domain-слое у нас описываются сущности. Соответственно,
реализуем таблицу для нашей базы данных. Для этого нажмите
правой клав. мыши по domain папке -> New -> Kotlin class/file. В
диалоговом окне сменив файл с Class на File укажите название
файлу - todoItems.

10.

Напишите следующую реализацию.

11.

Аннотация @Entity указывает, что данный data class будет
являться частью локальной БД и будет являться таблицей.
Переопределяя tableName мы указываем конкретное
наименование таблице.
Аннотация @PrimaryKey указывает, что поле id будет
первичным с авто заполнением, а @ColumnInfo указывает что это
будет простым полем для заполнения данными

12.

Data-слой

13.

Следующим в реализации будет roomDao. DAO (Data Access
Object) - это интерфейс, который определяет методы для работы с
базой данных. Здесь реализуются все методы которые будут
применяться к работе с БД.
Нажмите прав. клав. мыши по папке data -> New -> Kotlin
class/file. В диалоговом окне укажите тип interface и дайте название
файлу roomDao

14.

Напишите следующую реализацию

15.

Внутри interface roomDao реализованы три операции над БД:
чтение, удаление, создание.
Для работы с БД существует такой термин как CRUD (create,
read, update, delete) – описывающий основные операции над БД
(создание, чтение, обновление, удаление). Обычно принято
реализовывать все 4 операции.

16.

Теперь создадим экземпляр БД.
Для этого в той же data создайте файл с
class appDatabase. Чуть позже
расширьте его до abstract.
Отличительной особенностью
абстрактных классов является то, что
мы не можем создать объект подобного
класса.

17.

Мы почти закончили с data и
domain слоями! Осталось
реализовать отдельный класс
для работы с ViewModel –
roomRepository.
Главная цель репозитория –
реализация интерфейса который
описывает бизнес-процессы.
Однако в данном случае
репозиторий нам потребуется
для удобного представления
операций во ViewModel.
В папке data добавьте файл
roomRepository и напишите
реализацию

18.

Presentation-слой

19.

Приступая к
реализации presentation
слоя, первым делом
создадим ViewModel. Для
этого создайте новый класс
в Presentation слое и
именуйте его
roomViewModel. Напишите
следующую реализацию

20.

Для отображения
данных нам потребуется
создать отдельный
компонент – card(). В нем
описывается то, как будут
расположены компоненты
для текста, кнопок и
прочего.
Создайте новый файл
в presentation слое и
напишите следующую
реализацию

21.

Почти финиш.
Осталось создать экран
для отображения
элементов в MainActivity
реализуйте следующую
часть экрана.
Обратите внимание
на if(showDialog) {...},
реализация скрыта, ее
написание будет на
следующем слайде

22.

А вот и она!

23.

Осталось написать дополнительный экран в котором будут
созданы объекты/экземпляры классов базы данных и передана во
viewModel реализация.

24.

Передайте HomeScreen() в MainActivity и запустите
приложение!
English     Русский Правила