Added default ViewModelFactory for DI

This commit is contained in:
Denis Karmyshakov 2018-03-15 18:35:44 +03:00
parent 11d2b2de43
commit 87fd17084e
2 changed files with 20 additions and 0 deletions

View File

@ -16,6 +16,7 @@ android {
dependencies {
api project(path: ':libraries:components')
api 'javax.inject:javax.inject:1'
api 'net.danlew:android.joda:2.9.9'
api 'com.android.support:multidex:1.0.3'

View File

@ -0,0 +1,19 @@
package ru.touchin.templates.viewmodel
import android.arch.lifecycle.ViewModel
import android.arch.lifecycle.ViewModelProvider
import javax.inject.Inject
import javax.inject.Provider
import javax.inject.Singleton
@Singleton
class ViewModelFactory @Inject constructor(
private val creators: Map<Class<out ViewModel>, @JvmSuppressWildcards Provider<ViewModel>>
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T
= (creators[modelClass]?.get() as? T) ?: throw IllegalArgumentException("Unknown model class $modelClass")
}