Mohsen Beiranvand
1 min readJul 17, 2020

--

It can be, just you have to use them carefully because these fields initialize through the onCreate step:

protected lateinit var binding: VB
private set
protected lateinit var viewModel: VM
private set

here is another approach:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, layoutRes)
viewModel = ViewModelProviders.of(this, viewModelFactory).get(viewModelClass)
binding.setVariable(BR.viewModel, viewModel)
binding.executePendingBindings()

subscribeToViewModel(viewModel)
}
open fun subscribeToViewModel(viewModel: VM) {
//Here you can to do something related to baseViewModel
}

then you can override subscribeToViewModel in child

--

--

Mohsen Beiranvand
Mohsen Beiranvand

Written by Mohsen Beiranvand

Staff Android Engineer @ Truecaller

No responses yet