package Ġcom . example . android . polit ical prepared ness . election Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . example . android . polit ical prepared ness . R Ċ import Ġcom . example . android . polit ical prepared ness . databinding . Fragment E lection Binding Ċ import Ġcom . example . android . polit ical prepared ness . election . adapter . E lection ListAdapter Ċ import Ġcom . example . android . polit ical prepared ness . election . adapter . E lection Listener Ċ import Ġcom . example . android . polit ical prepared ness . network . Result Ċ Ċ class ĠE lection s Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠE lection s ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment E lection Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtoast : ĠToast ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment E lection Binding . inflate ( in flater ) ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġval ĠviewModel Factory Ġ= ĠE lection s ViewModel Factory ( require Activity (). application ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider ( this , ĠviewModel Factory ). get ( E lection s ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠE lection Listener Ġ{ Ġelection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on E lection Clicked ( election ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent E lection s Adapter Ġ= ĠE lection ListAdapter ( listener ) ĊĠĠĠĠĠĠĠ Ġbinding . up coming E lection s . adapter Ġ= Ġcurrent E lection s Adapter ĊĠĠĠĠĠĠĠ ĠviewModel . current E lection s . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġelection s Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelection s ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . up coming Loading . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent E lection s Adapter . submit List ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġsaved E lection s Adapter Ġ= ĠE lection ListAdapter ( listener ) ĊĠĠĠĠĠĠĠ Ġbinding . saved E lection s . adapter Ġ= Ġsaved E lection s Adapter ĊĠĠĠĠĠĠĠ ĠviewModel . saved E lection s . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġelection s Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelection s ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . saved Loading . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsaved E lection s Adapter . submit List ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . result . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( it . msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . up coming Loading . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Result Handled () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Http Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Http Error Toast ( it . code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . up coming Loading . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Result Handled () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Result Handled () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . navigate To V oter Info . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġelection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelection ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE lection s Fragment Directions . action E lection s Fragment To V oter Info Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . division ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on V oter Info Navig ated () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠviewModel . get E lection s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Toast ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(:: toast . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCancel s Ġthe Ġcurrent Ġtoast Ġto Ġavoid Ġqueue ing Ġmultiple Ġtoast s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtoast Ġ= ĠToast . makeText ( context , Ġmsg , ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Http Error Toast ( code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(:: toast . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCancel s Ġthe Ġcurrent Ġtoast Ġto Ġavoid Ġqueue ing Ġmultiple Ġtoast s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstring Ġ= ĠgetString ( R . string . could _ not _ fetch _ election s , Ġcode ) ĊĠĠĠĠĠĠĠ Ġtoast Ġ= ĠToast . makeText ( context , Ġstring , ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠ Ġ} Ċ }