Android - Архітектура MVVM (Model-View-ViewModel)

Опубликовано: 09 Май 2026
на канале: Roman Andrushchenko
28,159
667

Переписуємо проект з попереднього відео з використанням архітектури MVVM (Model-View-ViewModel), а також додаємо обробку асинхронних дій.

===
Підтримка:
Buy Me a Coffee: https://uandcode.com/join/coffee
PayPal: [email protected]
===

Посилання на код проекту з MVVM: https://github.com/romychab/android-t...

Посилання на зміни в коді проекту, які не увійшли у відео: 567b3744dc9d6006bcf87

Посилання на код проекту, який був взятий за основу в цьому відео: https://github.com/romychab/android-t...

Посилання на попереднє відео (розбір RecyclerView):    • Android - Основи RecyclerView  

Клас ChatActivity в Telegram: https://raw.githubusercontent.com/DrK...

00:00 - Вступ
01:35 - Трохи теорії
05:29 - Життєвий цикл ViewModel
05:55 - Згадуємо, що було зроблено у минулому відео і що перероблятимемо
06:42 - Переписуємо навігацію під фрагменти, редагуємо layout-файли
10:54 - Створення класу ViewModel, знайомство з LiveData
14:44 - Реалізація ViewModel та фрагмента для списку користувачів
17:09 - Реалізація фрагмента для відображення списку користувачів
20:36 - Створення фабрики ViewModel'ї
24:19 - Запускаємо проект, виправляємо помилки
26:17 - Реалізація ViewModel та фрагмента для відображення деталей про користувача
33:31 - Реалізація навігатора в MainActivity
35:06 - Знову запускаємо проект та виправляємо помилки
36:56 - Ускладнюємо проект: додаємо асинхронні завдання та індикацію прогресу виконання
38:37 - Створюємо свою реалізацію асинхронного завдання Task
47:39 - Переписуємо UsersService за допомогою Task
50:51 - Додаємо асинхронне завантаження списку в UsersListViewModel
01:04:25 - Використання postValue для передачі даних в LiveData з інших потоків
01:05:12 - Скасування завдань при виході з екрану
01:07:09 - Додаємо асинхронне завантаження для UserDetailsViewModel
01:10:53 - Додавання подій (показ toast-повідомлень / навігація в ViewModel)
01:17:12 - Переписуємо фрагменти та адаптер для списку користувачів
01:22:23 - Запускаємо проект
01:23:22 - Що можна покращити у проекті?