Guest User

ViewModelFactory

a guest
Jan 24th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.00 KB | None | 0 0
  1. package me.malvinr.newsarchitecture
  2.  
  3. import android.arch.lifecycle.ViewModel
  4. import android.arch.lifecycle.ViewModelProvider
  5. import javax.inject.Inject
  6. import javax.inject.Provider
  7. import javax.inject.Singleton
  8.  
  9. /**
  10.  * Created by Alvin on 01/01/2018.
  11.  */
  12. @Singleton
  13. class ViewModelFactory @Inject constructor(private val viewModelMap: Map<Class<out ViewModel>,
  14.         @JvmSuppressWildcards Provider<ViewModel>>)
  15.     : ViewModelProvider.Factory {
  16.  
  17.     @Suppress("UNCHECKED_CAST")
  18.     override fun <T : ViewModel?> create(modelClass: Class<T>) : T {
  19.         var viewModel = viewModelMap[modelClass]
  20.  
  21.         if (viewModel == null) {
  22.             for (entry in viewModelMap) {
  23.                 if (modelClass.isAssignableFrom(entry.key)) {
  24.                     viewModel = entry.value
  25.                     break
  26.                 }
  27.             }
  28.         }
  29.         if (viewModel == null) throw IllegalArgumentException("Unknown model class " + modelClass)
  30.         return viewModel.get() as T
  31.     }
  32.  
  33. }
Advertisement
Add Comment
Please, Sign In to add comment