Skip to content

Instantly share code, notes, and snippets.

@igorwojda
Created January 7, 2019 07:39
Show Gist options
  • Save igorwojda/a53871e248746df99c9e6ceab01cf838 to your computer and use it in GitHub Desktop.
Save igorwojda/a53871e248746df99c9e6ceab01cf838 to your computer and use it in GitHub Desktop.
Kotlin ViewModelProvider
class KotlinViewModelProvider {
companion object {
inline fun <reified T : ViewModel> of(fragment: Fragment, crossinline factory: () -> T): T {
@Suppress("UNCHECKED_CAST")
val vmFactory = object : ViewModelProvider.Factory {
override fun <U : ViewModel> create(modelClass: Class<U>): U = factory() as U
}
return ViewModelProviders.of(fragment, vmFactory)[T::class.java]
}
inline fun <reified T : ViewModel> of(fragmentActivity: FragmentActivity, crossinline factory: () -> T): T {
@Suppress("UNCHECKED_CAST")
val vmFactory = object : ViewModelProvider.Factory {
override fun <U : ViewModel> create(modelClass: Class<U>): U = factory() as U
}
return ViewModelProviders.of(fragmentActivity, vmFactory)[T::class.java]
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment