package Ġcom . example . assignment . i 0 0 2 . view . model ĊĊ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . databinding . Observable Field Ċ import Ġandroid . net . Uri Ċ import Ġandroid . support . v 4 . content . Context Compat . startActivity Ċ import Ġandroid . widget . Array Adapter Ċ import Ġcom . example . assignment . helpers . network . ErrorCode Ċ import Ġcom . example . assignment . i 0 0 2 . model . api . Express Network Model Ċ import Ġcom . example . assignment . i 0 0 2 . model . api . dto . Sample Po jo Ċ import Ġcom . example . assignment . i 0 0 2 . view . activity . Assignment Activity Ċ import Ġcom . example . assignment . i 0 0 2 . view . operation . Model View Loading Ops Ċ import Ġrx . android . schedul ers . Android Schedulers Ċ import Ġjava . io . Serializable Ċ Ċ data Ġclass ĠAssignment ViewModel ( ĊĠĠĠĠĠĠĠ Ġvar Ġdata : ĠList < Sample Po jo >? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ@ Transient Ġvar Ġcontext : ĠAssignment Activity ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġoverride Ġvar ĠisLoading : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġerror : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġoverride Ġvar ĠerrorCode : ĠErrorCode Ġ= ĠErrorCode . ERROR _ IGNORE ) Ġ: ĠSerializable , ĠModel View Loading Ops Ġ{ ĊĊĠĠĠ Ġvar Ġtext : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġposition : ĠInt ? Ġ= Ġ- 1 ĊĊĠĠĠ Ġfun ĠgetData () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExpress Network Model . getData (). observe On ( Android Schedulers . main Thread ()). subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. bind ViewModel ( Assignment ViewModel ( data Ġ= Ġit , Ġerror Ġ= Ġfalse , ĠisLoading Ġ= Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġcontext !! :: bind Throwable To ViewModel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. bind Throwable To ViewModel ( error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Retry () Ġ{ ĊĠĠĠĠĠĠĠ Ġerror Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcontext ?. bind ViewModel ( this ) ĊĠĠĠĠĠĠĠ ĠgetData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġproxy Position : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠObservable Field < Int >( position ). get () !! ĊĠĠĠĠĠĠĠ Ġset ( new Selected Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(- 1 Ġ== Ġposition Ġ|| Ġposition Ġ!= Ġnew Selected Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġit Ġ= Ġdata ?. get ( new Selected Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Car : Ġ" Ġ+ Ġit ?. from central ?. car ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġit ?. from central ?. train ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ+= Ġ"\ n Train : Ġ" Ġ+ Ġit . from central . train ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġnew Selected Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext !!. bind ViewModel ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Spinner Adapter ( context : ĠContext ): ĠArray Adapter < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġdata ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( datum Ġin Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray . add ( datum . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠArray Adapter ( context , Ġandroid . R . layout . simple _ spinner _ item , Ġarray ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclick On Button ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġ( data ?. get ( proxy Position ) Ġas ĠSample Po jo ). location ĊĠĠĠĠĠĠĠ Ġval Ġg mm Intent Uri Ġ= ĠUri . parse (" geo :" Ġ+ Ġlocation . latitude Ġ+ Ġ"," Ġ+ Ġlocation . longitude ) ĊĠĠĠĠĠĠĠ Ġval Ġmap Intent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġg mm Intent Uri ) ĊĠĠĠĠĠĠĠ Ġmap Intent .` package ` Ġ= Ġ" com . google . android . apps . maps " ĊĠĠĠĠĠĠĠ Ġif Ġ( map Intent . resolve Activity ( context . get PackageManager ()) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( context , Ġmap Intent , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }