Room в Jetpack Compose | Android Studio + Kotlin

YOUTUBE · 01.12.2025 05:09

Ключевые темы и таймкоды

Создание разметки

9:10
  • Добавление спейсера после роу-контейнера.
  • Использование лайзи калу для списка элементов.
  • Создание разметки для одного элемента из списка.

Создание функции для разметки

10:07
  • Использование функции для создания разметки.
  • Добавление карты с моди файером и паддингом.
  • Добавление текста и айкон батон для удаления.

Настройка текста и добавление элементов

11:59
  • Настройка текста с моди файером и паддингом.
  • Добавление айкон батон для удаления.
  • Проверка списка элементов.

Добавление слушателя для редактирования

13:58
  • Добавление слушателя для редактирования элементов.
  • Возможность добавления и редактирования элементов.
  • Подготовка к созданию базы данных.

Создание базы данных

15:54
  • Создание дата-класса для хранения данных.
  • Использование дата-ассесс обжикт для доступа к данным.
  • Добавление зависимостей для библиотеки рум.

Добавление зависимостей

17:46
  • Добавление зависимостей для библиотеки рум и процессора аннотаций.
  • Использование класса вью модул для организации кода.
  • Синхронизация проекта и подготовка к созданию базы данных.

Создание класса Entity

20:43
  • Создаем пакет для хранения данных.
  • Создаем класс Entity с аннотацией @Entity.
  • Указываем первичный ключ с аннотацией @PrimaryKey.

Поля и таблицы

21:40
  • Добавляем поля в класс Entity.
  • Указываем аннотацию @ColumnInfo для переименования полей в таблице.
  • Создаем таблицу в базе данных на основе класса Entity.

Создание базы данных

23:35
  • Создаем абстрактный класс MainDB, наследуемый от RoomDatabase.
  • Указываем таблицы для создания в базе данных.
  • Создаем функцию для инициализации базы данных.

Инициализация базы данных

26:29
  • Инициализируем базу данных в классе Application.
  • Получаем доступ к базе данных через класс Application.
  • Инициализируем базу данных при запуске приложения.

Создание Dao-объекта

30:20
  • Создаем интерфейс Dao для работы с базой данных.
  • Указываем аннотации для работы с Room.
  • Прописываем функции для записи и чтения данных в базу данных.

Вставка данных

32:17
  • Использование функции insert для вставки данных в таблицу.
  • Инициализация DAO из базы данных.
  • Аннотация @Insert для вставки данных.

Удаление данных

33:16
  • Использование функции delete для удаления данных.
  • Передача объекта с идентификатором для удаления.
  • Пример использования списка на экране для удаления элементов.

Обновление данных

34:16
  • Использование функции update для обновления данных.
  • Передача объекта с идентификатором для обновления.
  • Возможность использования одной функции для вставки и обновления.

Конфликтные стратегии

35:16
  • Использование аннотации @ConflictStrategy для обработки конфликтов.
  • Примеры стратегий: replace, ignore, abort.
  • Применение стратегии replace для обновления данных.

Считывание данных

36:12
  • Использование аннотации @Query для чтения данных.
  • Пример запроса для получения всех элементов из таблицы.
  • Использование класса Flow для обновления списка при изменениях в базе данных.

Создание класса View Model

40:03
  • Создание класса View Model для управления данными.
  • Передача базы данных в конструктор класса.
  • Использование специальной фабрики для инициализации класса View Model.

Инициализация фабрики

41:56
  • Создание собственной фабрики для инициализации класса View Model.
  • Получение экземпляра базы данных из класса Application.
  • Передача базы данных в конструктор класса View Model.

Создание класса и инициализация данных

43:53
  • Создание класса с конструктором и инициализация данных с помощью экстрас.
  • Использование константы для получения класса Application.
  • Преобразование класса Application в нужный класс с помощью каста.

Инициализация класса через фабрику

44:45
  • Преобразование класса в нужный тип для инициализации.
  • Добавление аннотации для предотвращения ошибок.
  • Инициализация класса через фабрику в конструкторе.

Получение данных из базы данных

47:43
  • Получение данных из базы данных с помощью функции getAll.
  • Использование функции collectState для обновления списка.
  • Инициализация списка в mainScreen.

Обновление состояния и сохранение данных

50:36
  • Обновление состояния текста в mainScreen.
  • Создание мутабельного состояния для хранения текста.
  • Сохранение изменений в базе данных при нажатии на кнопку.

Обработка событий и сохранение данных

52:33
  • Создание функции для обработки событий при нажатии на кнопку.
  • Определение, нужно ли добавлять новый элемент или редактировать существующий.
  • Сохранение изменений в зависимости от типа действия.

Работа с элементами списка

55:26
  • Использование оператора Элвиса для создания нового элемента.
  • Если элемент уже существует, перезаписываем его.
  • Если элемент новый, создаем его с идентификатором по умолчанию.

Обработка конфликтов и редактирование

56:23
  • Оператор Элвиса запускает новый элемент.
  • Если элемент старый, редактируем его.
  • При редактировании очищаем элемент, чтобы избежать конфликтов.

Добавление и редактирование элементов

57:11
  • При добавлении элемента очищаем поле для редактирования.
  • При редактировании передаем элемент, на который нажали.
  • Используем функцию для редактирования или создания нового элемента.

Удаление элементов

59:10
  • Добавляем функцию для удаления элемента.
  • Передаем элемент, который хотим удалить.
  • Вызываем функцию удаления в main.js.

Проверка работы функций

1:01:03
  • Добавляем и редактируем элементы.
  • Проверяем, что редактирование перезаписывает старый элемент.
  • Удаляем элементы, передавая их в функцию удаления.

Заключение и дополнительные ресурсы

1:04:50
  • Демонстрация работы всех функций.
  • Упоминание о более подробном курсе с созданием приложения.
  • Призыв к подписке и поддержке канала.