Course Content
-
Разработка приложения Фитнес-календарь
- Описание проекта
- Разработка графического интерфейса для отображения списка запланированных тренировок
-
Создание уведомления Notification
-
Создание PendingIntent
-
Разработка интерфейса для создания напоминания о тренировке
-
Создание локальной БД для хранения информации о тренировках
-
Создание BroadcastReceiver
-
Создание каналов уведомлений
-
Доработка методов для отображения уведомлений
-
Описание Alarm Manager
-
Реализация механизма напоминания через AlarmManager
-
Cоздание PendingIntent и добавление его к AlarmManager.
-
Выводы
Разработка графического интерфейса для отображения списка запланированных тренировок
Я не буду подробно останавливаться на создании списка, надеюсь эта тема для вас понятна и не вызовет затруднений. Опишу лишь ключевые шаги и оставлю ссылки на нужные классы.
Создание Адаптера
Для отображения списка запланированных тренировок будем использовать RecyclerView. Давайте создадим адаптер MainAdapter.kt
Код адаптера можно посмотреть по ссылке на Github
Создание UI Ячейки для отображения данных
Верстку ячейки вы можете найти по ссылке на Github
Наполнение списка мок-данными для проверки
Чтобы проверить, как будет выглядеть наш список, давайте создадим фэйковый репозиторий, который будет отдавать фэйковые данные для демонстрации и проверки нашего списка. Мок-репозиторий будет выглядеть так:
object ReminderRepository { fun getMockRepository(): List<ReminderData> { val swimming = ReminderData( id = 0, name = "Плавание", days = listOf<String>("Понедельник", "Среда", "Пятница") ) val running = ReminderData( id = 0, name = "Бег", days = listOf<String>("Вторник", "Четверг", "Суббота") ) val cycling = ReminderData( id = 0, name = "Езда на велосипеде", days = listOf<String>("Понедельник", "Вторник") ) return listOf<ReminderData>(swimming, running, cycling) } }
Ну и в методе onViewCreated() фрагмента FirstFragment связываем данные через адаптер и recyclerView
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) textViewNoReminders = view.findViewById(R.id.textViewNoReminders) progressBar = view.findViewById(R.id.progressBar) recyclerView = view.findViewById(R.id.recyclerViewReminders) recyclerView.addItemDecoration( DividerItemDecoration( view.context, DividerItemDecoration.VERTICAL ) ) mainAdapter = MainAdapter(this, ReminderRepository.getMockRepository()) recyclerView.adapter = mainAdapter recyclerView.visibility = View.VISIBLE progressBar.visibility = View.GONE fab.setOnClickListener { findNavController().navigate(R.id.action_FirstFragment_to_SecondFragment) } }
Обратите внимание на метод addItemDecoration() который позволяет добавить разделители между ячейками без создания дополнительных View в самой ячейке. Вот и всё! Мы создали UI приложения и готовы двигаться дальше – теперь нам нужно реализовать отображение уведомлений для напоминаний.
Весь код, который мы сделали в этом уроке вы сможете найти по ссылке в ветке feature/01-add-recycler-view-
Следующие уроки и исходники доступны только для зарегистрированных пользователей. Зарегистрируйтесь бесплатно.