kotlin-mvvm
MVVM(Model View ViewModel) sample in Kotlin using the components ViewModel, LiveData, the libraries Retrofit, Glide and Mockito for testing.
MVVM Pattern (Model View ViewModel)
Demo
Architecture
Flow
Screenshots
Slides
Android MVVM https://docs.google.com/presentation/d/1nTwtU8OWYs_8Q3i_3hOPAWodDpDKzO--uA-4b6LUr8g/edit?usp=sharing
Android MVVM Clean https://docs.google.com/presentation/d/1luTzvqGaMjVycEx109-AjYIj3FIpXYAt3Mnu-gjqxtc/edit?usp=sharing
Updates [July 2022]
Added state flow. branch State Flow
Added jetpack compose. branch compose
Added rxjava library. branch rx-kotlin
Add navigation component library. branch navigation-component
Added viewbinding support and kotlin extensions were removed. branch viewbinding
Added dependency injection with Hilt, included android tests branch hilt
Added unit tests with Flow branch flow
Added kotlin Flow and fragment ktx branch flow
Room branch room
Added View Binding branch viewbinding
Dependencies versions were updated and ViewModelProviders class was removed (deprecated). all branches
Added Coroutines with retrofit and sealed classes to replace callbacks. Included testing with Coroutines. branch coroutines
Added Koin, dependency injection framework written in Kotlin. Included integration with Mockito for testing (11th Oct) branch koin
Added Unit Testing with Mockito (27th May) Link
Dependencies
- Retrofit 2 version: '2.3.0'
- OkHttp 3 version: '3.4.1'
- Glide version: '4.9.0'
- AndroidX version: '1.2.0'
- Arch Lifecycle version: '2.4.0'
- Mockito version: '2.27.0'
- Arch Testing version: '2.4.0'
References
- State Flow https://developer.android.com/kotlin/flow/stateflow-and-sharedflow
- ViewModel https://developer.android.com/topic/libraries/architecture/viewmodel
- LiveData https://developer.android.com/topic/libraries/architecture/livedata
- Android Architecture Blueprints https://github.com/googlesamples/android-architecture
- Android Jetpack: ViewModel https://www.youtube.com/watch?v=5qlIPTDE274
- Mockito : https://site.mockito.org/
- Unit Testing + Mockito + Kotlin + Architecture components https://medium.com/@marco_cattaneo/unit-testing-with-mockito-on-kotlin-android-project-with-architecture-components-2059eb637912
- Junit + LiveData https://jeroenmols.com/blog/2019/01/17/livedatajunit5/
Contributing and reporting issues
If you want to contribute in this repository, please send me a pull request or if you want to report some issues please send at https://github.com/emedinaa/kotlin-mvvm/issues
I appreciate any question or comment. Also, if you consider it useful, you can give me a star ⭐ ⭐ ⭐.