Skip to content

Instantly share code, notes, and snippets.

@pandulapeter
Created April 17, 2019 13:42
Show Gist options
  • Select an option

  • Save pandulapeter/d8f2c0da14cc9259053911d7283e96e1 to your computer and use it in GitHub Desktop.

Select an option

Save pandulapeter/d8f2c0da14cc9259053911d7283e96e1 to your computer and use it in GitHub Desktop.
abstract class BaseFragment<B : ViewDataBinding, VM : BaseViewModel>(@LayoutRes private val layoutResourceId: Int) : Fragment() {
protected var binding by AutoClearedValue<B>()
protected abstract val viewModel: VM
final override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? =
DataBindingUtil.inflate<B>(inflater, layoutResourceId, container, false).also {
binding = it
}.root
@CallSuper
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
binding.lifecycleOwner = viewLifecycleOwner
binding.setVariable(BR.viewModel, viewModel)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment