В проекте использовались следующие библиотеки:
- Glide (implementation 'com.github.bumptech.glide:glide:4.12.0') - библиотека для загрузки и отображения изображений.
- Lifecycle ViewModel (implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1') - библиотека для управления данными, связанными с пользовательским интерфейсом.
- Activity (implementation 'androidx.activity:activity-ktx:1.7.2') - библиотека для упрощения работы с активностями в AndroidX.
- Также используется binding для упрощения работы с xml.
Описание функционала:
- Сначала создаётся MainActivity и запускает HomePageFragment, загружается начальный экран без коктейлей.
- При добавлении, часть фрагмента заменяется другим для отображения списка добавленных коктейлей.
- При нажатии на кнопку добавить, открывается активити SaveCocktailView.
- При нажатии на кнопку сохранения, список регенерируется вместе с новым элементом и переносит нас на главный экран с изменённым фрагментом.
- При нажатии на кнопку отмены, возвращаемся обратно.
- При нажатии на конкретный коктель, открывается активити Cocktail_View_Activity со всеми данными (изображение почему-то не отображается именно в этой активити).
- При нажатии кнопки Edit, запускается ранее упомянутая активити SaveCocktailView, но в этот раз туда передаётся Intent "edit" для различия с добавлением, все поля заполняются и после изменения и сохранения обновляются только на главном экране.
- При отмене, возвращаемся обратно.
Данные хранятся в "MutableLiveData MutableList(Cocktail)" с подпиской на изменения.
Для сохранения данных была попытка написать класс с SharedPreferences, но не удалось, пыталась сохранить MutableList, а ещё в виде JSON, но приложение всегда зависало при сохранении.
Также была попытка исправить RecyclerView, чтобы не было таких отступов, но не было найдено решения для этой ситуации.