Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.malvinr.newsarchitecture
- import android.arch.lifecycle.ViewModel
- import android.arch.lifecycle.ViewModelProvider
- import javax.inject.Inject
- import javax.inject.Provider
- import javax.inject.Singleton
- /**
- * Created by Alvin on 01/01/2018.
- */
- @Singleton
- class ViewModelFactory @Inject constructor(private val viewModelMap: Map<Class<out ViewModel>,
- @JvmSuppressWildcards Provider<ViewModel>>)
- : ViewModelProvider.Factory {
- @Suppress("UNCHECKED_CAST")
- override fun <T : ViewModel?> create(modelClass: Class<T>) : T {
- var viewModel = viewModelMap[modelClass]
- if (viewModel == null) {
- for (entry in viewModelMap) {
- if (modelClass.isAssignableFrom(entry.key)) {
- viewModel = entry.value
- break
- }
- }
- }
- if (viewModel == null) throw IllegalArgumentException("Unknown model class " + modelClass)
- return viewModel.get() as T
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment