package Ġtin . th ure in . android _ databinding _ mv vm _ kotlin Ċ Ċ import Ġandroid . arch . lifecycle . Mutable LiveData Ċ import Ġandroid . databinding . Base Observable Ċ import Ġandroid . databinding . Bind able Ċ Ċ class ĠUser ViewModel ( private Ġvar Ġuser : ĠUser Ġ= ĠUser (), Ġprivate Ġvar Ġ_ name Error : ĠString ? Ġ= Ġnull , Ġprivate Ġvar Ġ_ password Error : ĠString ? Ġ= Ġnull ) Ġ: ĠBase Observable () Ġ{ ĊĊĠĠĠ Ġvar Ġmutable User Ġ: ĠMutable LiveData < User > Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġvar Ġusername Error Ġ: ĠString ? ĊĠĠĠĠĠĠĠ Ġ@ Bind able ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ name Error ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ name Error Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify PropertyChanged ( BR . username Error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġpassword Error Ġ: ĠString ? ĊĠĠĠĠĠĠĠ Ġ@ Bind able ĊĠĠĠĠĠĠĠ Ġget () Ġ{ Ġreturn Ġ_ password Error } ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ password Error Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify PropertyChanged ( BR . password Error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bind able ĊĠĠĠ Ġfun Ġget Username (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . user . username ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Username ( username : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . user . username Ġ= Ġusername ĊĠĠĠĠĠĠĠ Ġnotify PropertyChanged ( BR . username ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bind able ĊĠĠĠ Ġfun Ġget Password (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . user . password ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Password ( password : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . user . password Ġ= Ġpassword ĊĠĠĠĠĠĠĠ Ġnotify PropertyChanged ( BR . password ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠisValid (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( user . username . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Error Ġ= Ġ" User Ġname Ġis Ġrequired " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( user . password . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Error Ġ= Ġ" Password Ġis Ġrequired " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Btn Login Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isValid ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// emit Ġsuccessful Ġuser Ġvalue Ġto Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable User . value Ġ= Ġuser ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }