Создание разметки 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 Демонстрация работы всех функций. Упоминание о более подробном курсе с созданием приложения. Призыв к подписке и поддержке канала.