Приложение для создания заявок с помощью базы адресов.
Приложение состоит из двух экранов. Первый экран нужен толкьо для перехода к главному экрану создания заявки
Экран Создание заявки
На экране находся поля для ввода информации по заявке: поле ввода улицы, дома, корпуса и квартиры, а также кнопка для отправки заявки.
На экране реализована следующая логика
- При открытии экрана на поле для ввода улицы, показывается клавиатура.
- После ввода 3-х символов открывается выпадающий список улиц(список приходит с сервера).
- Поиск улиц по вхождению ввода в название.
- Если выбрать улицу появляется окно для выбора номера дома из имеющихся в базе.
- Сортировка по номеру дома.
- Если не выбрать улицу, или такой нет, то просто вводим ее название - окно с выбором дома скрывается.
- Если выбран номер дома из базы, то поля дом, корпус будут скрыты, если нет - показаны.
- Кнопка Отправить активна только если выбраны все параметры.
- Если выбираем улицу из списка - то имеем некий ID улицы.
- По нажатию на кнопку Отправить будет показан тост-сообщение с данными о заявке.
Техническая часть
- Проект выполенен как single activity с фрагментами. Навигация с помощью Navigation component и SafeArgs.
- Проект реализован на чистой архитектуре, использованым слои data, domain, presentation. Слои не связаны, модели в разных слоях используются разные.
- В presentation слое проекта используется паттерн MVVM и LiveData. Управление Ui через states.
- DI реализован с помощью Koin.
- Для получения данных с API используется Retrofit и Courutines.
- Добавлен splashScreen.
- Создан кастомный адаптер для autocomleteTextView.
- Kotlin
- Clean Architecture
- Koin
- Retrofit
- SOLID
- MVVM (ViewModel, LiveData)
- ViewBinding
- Navigation Component
- Coroutines
- SplashScreen