Advertisement
Guest User

Untitled

a guest
Oct 15th, 2018
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 0.79 KB | None | 0 0
  1. @Singleton
  2. class ViewModelFactory @Inject
  3. constructor(private val creators: Map<Class<out ViewModel>, Provider<ViewModel>>) : ViewModelProvider.Factory {
  4.  
  5.     override fun <T : ViewModel> create(modelClass: Class<T>): T {
  6.         var creator: Provider<out ViewModel>? = creators[modelClass]
  7.         if (creator == null) {
  8.             for ((key, value) in creators) {
  9.                 if (modelClass.isAssignableFrom(key)) {
  10.                     creator = value
  11.                     break
  12.                 }
  13.             }
  14.         }
  15.         if (creator == null) {
  16.             throw IllegalArgumentException("unknown model class $modelClass")
  17.         }
  18.         try {
  19.             return creator.get() as T
  20.         } catch (e: Exception) {
  21.             throw RuntimeException(e)
  22.         }
  23.  
  24.     }
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement