package Ġcom . rent my car . rent my car . controller Ċ Ċ import Ġcom . air bnb . e po xy . E po xy Controller Ċ import Ġcom . rent my car . rent my car . R Ċ import Ġcom . rent my car . rent my car . Rent My Car Application Ċ import Ġcom . rent my car . rent my car . databinding . Model Location ListItem Binding Ċ import Ġcom . rent my car . rent my car . domain . model . Local Exception Ċ import Ġcom . rent my car . rent my car . domain . model . Location Ċ import Ġcom . rent my car . rent my car . e po xy . Empty List E po xy Model Ċ import Ġcom . rent my car . rent my car . e po xy . Header E po xy Model Ċ import Ġcom . rent my car . rent my car . e po xy . Loading E po xy Model Ċ import Ġcom . rent my car . rent my car . e po xy . View Binding Kotlin Model Ċ Ċ class ĠLocation List E po xy Controller ( ĊĠĠĠ Ġprivate Ġval Ġon Location Selected : Ġ( Int ) Ġ-> ĠUnit Ċ ): ĠE po xy Controller () Ġ{ ĊĠĠĠ Ġvar ĠisLoading : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Model Build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġlocations : ĠList < Location ?> Ġ= Ġempty List () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Model Build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Models () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isLoading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoading E po xy Model (). id (" loading "). addTo ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠHeader E po xy Model ( Rent My Car Application . context . getString ( R . string . my _ locations )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. id (" header "). addTo ( this ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( locations . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Exception Ġ= ĠLocal Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR ent My Car Application . context . getString ( R . string . no _ locations _ found ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR ent My Car Application . context . getString ( R . string . no _ locations _ available ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEmpty List E po xy Model ( local Exception ). id (" emptyList "). addTo ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlocations . forEach Ġ{ Ġlocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocation ListItem Model ( location , Ġon Location Selected ). id (" header _${ location . id } "). addTo ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠLocation ListItem Model ( ĊĠĠĠĠĠĠĠ Ġval Ġlocation : ĠLocation , ĊĠĠĠĠĠĠĠ Ġval Ġon Location Selected : Ġ( Int ) Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠView Binding Kotlin Model < Model Location ListItem Binding >( R . layout . model _ location _ list _ item ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠModel Location ListItem Binding . bind () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation TextView . text Ġ= ĠR ent My Car Application . context . getString ( R . string . location _ list _ item , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . street , Ġlocation . house Number , Ġlocation . postal Code , Ġlocation . city , Ġlocation . country ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . id ?. let Ġ{ Ġit 1 Ġ-> Ġon Location Selected ( it 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }