This app get data from movie data base api and show popular movie items in a list of horizontal shelves where each shelve show list of movie poster. Clicking any of the tile will open movie details page which show full screen poster with some movie information overlayed on the image. Itβs a complete MVVM project that use dependency injection and lifecycle aware components. It use all features of Android Architecture Components library like Room, ViewModels, LiveData and other Lifecycle-aware components.
I used Dagger 2 Dependency Injection in this project to manage dependencies, simplified acces to shared dependency like use of Retrofit to make asynchronous API calls, also for scope instances like Singleton repositories. Inside fragment used Livedata to observe data changes in ViewModel. Used the repository to maintain separation of concern and also to keep the ViewModel lean. Converstion of rx stream to liveData is done in the viewModel.
Lazy Image loading is achieved using Glidelibrary. By deafult all images will be loaded to memory. Disk cache is also possible with few strategy for caching (did not added any disk cache in this project).
Used CardView for rounded conrnering images and ConstraintLayout for optimized Layout. Added few Unit test for the viewModel
List of android libraries used
List of 3rd Party libraries
Coding architecture/ Design Pattern: