package Ġcom . far id fa jr ak . kotlin _ playground . gener ics Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ Ċ abstract Ġclass ĠBase Activity < E Ġ: ĠView Data Binding , ĠT Ġ: ĠBase ViewModel > Ġ: ĠAppCompatActivity () Ġ, ĠLifecycle Owner Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġbinding Ġ: ĠE ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Ġ: ĠT Ċ Ċ // ĠĠĠ Ġabstract Ġfun Ġinject () ĊĊĠĠĠ Ġabstract Ġfun ĠgetClass ViewModel () Ġ: ĠClass < T > ĊĊĠĠĠ Ġabstract Ġfun Ġget Layout Id () Ġ: ĠInt ĊĊĠĠĠ Ġabstract Ġfun Ġget ViewModel Factory () Ġ: ĠViewModel Provider . Factory ĊĊĊĊĊĠĠĠ Ġabstract Ġfun Ġinit Ui () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġinject () ĊĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , get Layout Id ()) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this , get ViewModel Factory ()). get ( getClass ViewModel ()) ĊĊĠĠĠĠĠĠĠ Ġlifecycle . add Observer ( viewModel ) ĊĊĠĠĠĠĠĠĠ Ġinit Ui () ĊĊĠĠĠ Ġ} Ċ }