Стартовый экран мобильного приложения по доставке еды. Тестовое задание от компании Hammer-systems.
Основной необходимый рабочий функционал - получение по любому подходящему api информации и еде на доставку в основном скролл-окне приложения. Коллапсируемые рекламные баннеры при скролле основного окна вниз.
Экран состоит из основной Activity с верхним и нижним меню (xml верстка) и одним Fragment внутри с содержанием страницы "Меню" (xml верстка)
Для отображения списка еды и рекламных баннеров используется Recycler View. Xml верстка еды, Xml верстка баннера. Посредством Adapter'ов и ViewHolder'ов они добавляются на экран фрагмента (еда, баннеры).
Для получения информации о доступной к доставке еде использовался сервис создания случайных данных для web-api mockAPI. GET вызов на https://6543f4f201b5e279de21322b.mockapi.io/food/product выдает Json файл, который содержит:
- Случайные слова в качестве наименования еды
- Случайные слова описания
- Случайную цифру для цены
- Ссылку на картинку с сайта случайных фото loremflick
- Номер по порядку для идентификации
Запрос отправляется при помощи Retrofit через сервис.
Полученные данные сохраняются в базу данных на основе ROOM в репозитории и оттуда передаются в LiveData.
ViewModel, присоединенная к фрагменту, отслеживает эту LiveData и заполняет ей адаптер основного списка.
База данных используется для ситуации отсутствия интернета - при неудачном запросе на экране будет отображен последний удачный результат.
Для Dependency Injection в проекте используется Dagger. Модули