Skip to content

Instantly share code, notes, and snippets.

@ericksli
Last active September 3, 2018 15:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ericksli/bd4648a9c3c99616ad40ca16c1b577e3 to your computer and use it in GitHub Desktop.
Save ericksli/bd4648a9c3c99616ad40ca16c1b577e3 to your computer and use it in GitHub Desktop.
Simplify the creation of ViewModel #android #kotlin
class DemoActivity : AppCompatActivity() {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = viewModel(MyViewModel.Factory(application))
setContentView(R.layout.activity_demo)
}
}
import android.arch.lifecycle.ViewModel
import android.arch.lifecycle.ViewModelProvider
import android.arch.lifecycle.ViewModelProviders
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentActivity
inline fun <reified T : ViewModel> FragmentActivity.viewModel(factory: ViewModelProvider.Factory): T =
ViewModelProviders.of(this, factory).get(T::class.java)
inline fun <reified T : ViewModel> Fragment.viewModel(factory: ViewModelProvider.Factory): T =
ViewModelProviders.of(this, factory).get(T::class.java)
inline fun <reified T : ViewModel> FragmentActivity.viewModel(): T =
ViewModelProviders.of(this).get(T::class.java)
inline fun <reified T : ViewModel> Fragment.viewModel(): T =
ViewModelProviders.of(this).get(T::class.java)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment