package Ġcom . example . android . prox imo . ui Ċ Ċ import Ġandroid . R Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Spinner Ċ 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 . prox imo . databinding . Change Location Fragment Binding Ċ import Ġcom . example . android . prox imo . view models . Change Location ViewModel Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ Ċ class ĠChange Location Fragment Ġ: ĠFragment (), ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġselected District : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġselected Count y : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġcount ies : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġval Ġdistrict s : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġspinner District : ĠSp inner ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġspinner Count y Ġ: ĠSp inner ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdata Adapter Count y : ĠArray Adapter < String > ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠChange Location ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( this ). get ( Change Location ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠChange Location Fragment Binding . inflate ( in flater ) ĊĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĊĠĠĠĠĠĠĠ Ġspinner District Ġ= Ġbinding . district ĊĠĠĠĠĠĠĠ Ġspinner Count y Ġ= Ġbinding . county ĊĊĠĠĠĠĠĠĠ Ġdistrict s . add ( resources . getString ( com . example . android . prox imo . R . string . district )) ĊĊĠĠĠĠĠĠĠ ĠviewModel . district s . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdistrict s . addAll ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Adapter District : ĠArray Adapter < String > Ġ= ĠArray Adapter < String >( context !! , ĠR . layout . simple _ spinner _ item , Ġdistrict s ) ĊĠĠĠĠĠĠĠ Ġdata Adapter District . set DropDown View Resource ( R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠ Ġspinner District . adapter Ġ= Ġdata Adapter District ĊĠĠĠĠĠĠĠ Ġspinner District . on ItemSelected Listener Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġ// Ġ-------------------------------------------------------------------------------- ----- Ġ// ĊĊĠĠĠĠĠĠĠ Ġcount ies . add ( resources . getString ( com . example . android . prox imo . R . string . county )) ĊĊĠĠĠĠĠĠĠ ĠviewModel . count ies . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ies . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ies . add ( resources . getString ( com . example . android . prox imo . R . string . county )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ies . addAll ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġdata Adapter Count y Ġ= ĠArray Adapter < String >( context !! , ĠR . layout . simple _ spinner _ item , Ġcount ies ) ĊĠĠĠĠĠĠĠ Ġdata Adapter Count y . set DropDown View Resource ( R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠ Ġspinner Count y . adapter Ġ= Ġdata Adapter Count y ĊĠĠĠĠĠĠĠ Ġspinner Count y . on ItemSelected Listener Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġbinding . ack BTN . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Count y Ġ!= Ġnull Ġ&& Ġselected Count y Ġ!= Ġ" Con cel ho :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( Change Location Fragment Directions . action Change Location Fragment To Types Services Fragment ( selected Count y !! , Ġselected District !! )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( binding . root Layout , Ġ" Por Ġfavor Ġintro du za Ġuma Ġlocal izaÃ§Ã£o ĠvÃ¡l ida .. Ġ", ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear Count ies () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstr : ĠString Ġ= Ġspinner Count y . selected Item . toString () ĊĠĠĠĠĠĠĠ Ġdata Adapter Count y . remove ( str ) ĊĠĠĠĠĠĠĠ Ġdata Adapter Count y . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġspinner Count y . setSelection ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġcount ies . clear () ĊĠĠĠĠĠĠĠ Ġcount ies . add ( resources . getString ( com . example . android . prox imo . R . string . county )) ĊĠĠĠĠĠĠĠ Ġselected Count y Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View < *> ?, Ġview : ĠView ?, Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( parent ?. id Ġ== Ġcom . example . android . prox imo . R . id . district ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent . getItem At Position ( position ) Ġ!= Ġ" Dist rito :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . search Count ies ( parent . getItem At Position ( position ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected District Ġ= Ġparent . getItem At Position ( position ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent . getItem At Position ( position ) Ġ== Ġ" Dist rito :" Ġ&& Ġselected Count y Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Count ies () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( parent ?. id Ġ== Ġcom . example . android . prox imo . R . id . county ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent . getItem At Position ( position ) Ġ!= Ġ" Con cel ho :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Count y Ġ= Ġparent . getItem At Position ( position ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠ Ġ} Ċ } Ċ