package Ġcom . example . android . polit ical prepared ness . represent ative . adapter Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Spinner Ċ import Ġandroidx . core . net . to Uri Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġandroidx . databinding . Inverse Binding Adapter Ċ import Ġandroidx . databinding . Inverse Binding Listener Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . android . polit ical prepared ness . G lide App Ċ import Ġcom . example . android . polit ical prepared ness . R Ċ import Ġcom . example . android . polit ical prepared ness . represent ative . model . Represent ative Ċ import Ġtim ber . log . Tim ber Ċ Ċ @ Binding Adapter (" profile Image ") Ċ fun Ġfetch Image ( view : ĠImageView , Ġsrc : ĠString ?) Ġ{ ĊĠĠĠ ĠTim ber . d (" fetch Image Ġfor : Ġ$ src ") ĊĠĠĠ Ġsrc ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġsrc . to Uri (). build Up on (). scheme (" https "). build () ĊĠĠĠĠĠĠĠ Ġ// Ġload Ġimage Ġand Ġcircle Ġcrop Ġusing Ġg lide Ġ- Ġuser Ġic _ profile Ġas Ġa Ġplaceholder Ġand Ġfor Ġerrors ĊĠĠĠĠĠĠĠ ĠG lide App ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( view . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. circle Crop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ profile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ profile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( view ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Binding Adapter (" state Value ") Ċ fun ĠSp inner . set NewValue ( value : ĠString ?) Ġ{ ĊĠĠĠ Ġval Ġadapter Ġ= Ġto Typed Adapter < String >( this . adapter Ġas ĠArray Adapter <* >) ĊĠĠĠ Ġval Ġposition Ġ= Ġwhen Ġ( adapter . getItem ( 0 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġadapter . getPosition ( value ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis . selected Item Position ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( position Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Selection ( position ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Inverse Binding Adapter ( attribute Ġ= Ġ" state Value ") Ċ fun ĠSp inner . get NewValue (): ĠString Ġ{ ĊĠĠĠ Ġval Ġstates : ĠArray < String > Ġ= Ġresources . getString Array ( R . array . states ) ĊĠĠĠ Ġreturn Ġstates [ this . selected Item Position ] Ċ } Ċ Ċ @ Binding Adapter (" state Value Attr Changed ") Ċ fun ĠsetState Listener ( spinner : ĠSp inner , Ġstate Change : ĠIn verse Binding Listener ?) Ġ{ ĊĠĠĠ Ġif Ġ( state Change Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġspinner . on ItemSelected Listener Ġ= Ġnull ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlistener : ĠAdapter View . On ItemSelected Listener Ġ= Ġobject Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent : ĠAdapter View < *> ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠView ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠLong ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Change . onChange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Change . onChange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġspinner . on ItemSelected Listener Ġ= Ġlistener ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > Ġto Typed Adapter ( adapter : ĠArray Adapter < *> ): ĠArray Adapter < T > Ġ{ ĊĠĠĠ Ġreturn Ġadapter Ġas ĠArray Adapter < T > Ċ } Ċ Ċ @ Binding Adapter (" list Data ") Ċ fun Ġbind RecyclerView ( re cyclerView : ĠRecyclerView , Ġdata : ĠList < Represent ative > ?) Ġ{ ĊĠĠĠ Ġval Ġadapter Ġ= Ġre cyclerView . adapter Ġas ĠRepresent ative ListAdapter ĊĠĠĠ Ġadapter . submit List ( data ) Ċ } Ċ