Movie-Catalog-Dicoding-Kejar-2019 is android Application for get Movie & TV Show from MovieDB
visit Medium Stories -> https://medium.com/@yudikarma/android-mvvm-with-jetpack-component-and-dagger2-dcfab5b29c22
https://developer.android.com/jetpack https://blog.mindorks.com/ https://codingwithmitch.com/blog/
/ architecture / Description
/-------------------------------------------
/ Model / Response or entity
/ View / Fragment or Activity (UI)
/ ViewModel / Busines Logic
/ Repository / Door to get data (from network or local database or prefrence)
> - Ui just Acces repository via ViewModels
> - every UI (activity or Fragment) should have ViewModel or androidViewmodel
> - do not edit Base Class (*BaseActivity *BaseFragment *BaseViewmodel)
> - whats should i do if wanna add news activity or fragment ??
> 1. if your activity need Inject module (need repository or viewmodel)
> - dont forget add your activity in ActivityBuilder
> - if need viewmodel. please this activity extend : BaseAcitivytyViewModel.kt
> - if this activity has fragment. please change extends to : BaseActivityhasFragment.kt
> - if just need inject. only need to extends : BaseActivity.kt
> 2. if you fragment need inject module (need repository or viewmodel use network request)
> - dont forget to create your FragmentProviders and add your fragment providers to Youractivity module in ActivityBuilder.kt
> - if need to inject and need viewmodel ? extends : BaseFragment.kt
> - whats shoud i do if wanna add news ViewModel ?
> 1. if your viewmodel need inject module (repository and other)
> - add inject constructor to viewmodel > see sample at my viewmodel
> - extends : BaseViewmodel.kt
> - add your viewmodel to ViewModelModule.kt
> - what should i do if wanna add news WorkManager class ?
> - dont forget add your register to Worker Module
> - put your workmanager class in package "utils/worker"
> - put Model class in Model Package at Data. local for model local and network for model response
> - if your class need Serialize or deserialize JSON GSON. dont forget add keep your class in proguard-Rules.pro
> - whats should i do if wanna add news Service ?
> - if your service need inject ? dont forget add your service class in ServiceBuilder.kt
> - if you wanna add news Library. please check for proguard rules that library and dont forger to Proguard-rules.pro
/ Package / description
/--------------------------------
/ DATA / all class about need Data (model,api client,room,Prefrence helper,dll
/ DI / Depedencies Injection Package
/ UI / All about UI, like activity or fragment
/ Utils / Common class, like Helper class,object, ekstension, custom class and more
----------------------------------------------------------------------------------------------
Zonapets uses a number of open source projects to work properly:
- Glide - An image loading and caching library for Android focused on smooth scrolling
- Android Jetpack Architecture Components - Jetpack is a suite of libraries, tools, and guidance to help developers write high-quality apps easier
- Retrofit /OkHttp - MA type-safe HTTP client for Android and Java
- Gson - A Java serialization/deserialization library to convert Java Objects into JSON and back
- Dagger 2 - Dagger is a fully static, compile-time dependency injection framework for both Java and Android. It is an adaptation of an earlier version created by Square and now maintained by Google.
- Anko - Pleasant Android application development
- Coroutines - Library support for Kotlin coroutines with multiplatform support. This is a companion version for Kotlin
- Espresso - for UI tests
- shimmer - An easy, flexible way to add a shimmering effect to any view in an Android app.
- guava - Google core libraries for Java
- eventbus - Event bus for Android and Java that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.
- material search view - Cute library to implement SearchView in a Material Design Approach