package Ġcom . example . sport s app . fragments . update Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view .* Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġcom . example . sport s app . R Ċ import Ġcom . example . sport s app . model . User Ċ import Ġcom . example . sport s app . view model . User ViewModel Ċ import Ġkotlinx . android . synt hetic . main . fragment _ update .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ update . view .* ĊĊ Ċ class ĠUpdate Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġargs Ġby Ġnav Args < Update Fragment Args >() ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm User ViewModel : User ViewModel ĊĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġval Ġview = Ġinflater . inflate ( R . layout . fragment _ update , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġm User ViewModel Ġ= ĠViewModel Provider ( this ). get ( User ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġview . update FirstName _ et . setText ( args . currentUser . firstName ) ĊĠĠĠĠĠĠĠ Ġview . update LastName _ et . setText ( args . currentUser . lastName ) ĊĠĠĠĠĠĠĠ Ġview . update Age _ et . setText ( args . currentUser . age . toString ()) ĊĊĊĠĠĠĠĠĠĠ Ġview . update _ btn . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Item (){ ĊĠĠĠĠĠĠĠ Ġval ĠfirstName Ġ= Ġupdate FirstName _ et . text . toString () ĊĠĠĠĠĠĠĠ Ġval ĠlastName Ġ= Ġupdate LastName _ et . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġage Ġ= ĠInteger . parseInt ( update Age _ et . text . toString ()) ĊĊĠĠĠĠĠĠĠ Ġif ( input Check ( firstName , lastName , update Age _ et . text )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated User = ĠUser ( args . currentUser . id , firstName , lastName , age ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm User ViewModel . update User ( updated User ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), " Successfully Ġupdated ", Toast . LENGTH _ LONG ). show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . action _ update Fragment _ to _ list Fragment ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), " Please Ġfill Ġout Ġall Ġfields ", Toast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinput Check ( f irs Name : ĠString , lastName : String , Ġage : ĠEdit able ): Boolean { ĊĠĠĠĠĠĠĠ Ġreturn Ġ!( TextUtils . isEmpty ( f irs Name ) Ġ&& ĠText Utils . isEmpty ( lastName ) Ġ&& Ġage . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . delete _ menu , menu ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( item . itemId == R . id . menu _ delete ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete User () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete User (){ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( require Context ()) ĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button (" Yes "){ _, _-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm User ViewModel . delete User ( args . currentUser ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), " Successfully Ġdeleted Ġ${ args . currentUser . firstName }", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . action _ update Fragment _ to _ list Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuilder . set Negative Button (" No "){ _, _-> ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle (" Delete Ġ${ args . currentUser . firstName }? ") ĊĠĠĠĠĠĠĠ Ġbuilder . setMessage (" Are Ġyou Ġsure Ġyou Ġwant Ġto Ġdelete Ġ${ args . currentUser . firstName }? ") ĊĠĠĠĠĠĠĠ Ġbuilder . create (). show () ĊĠĠĠ Ġ} Ċ }