package Ġcom . vn . nt es co . activity Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . widget . EditText Ċ import Ġcom . google . android . gms . common . Connection Result Ċ import Ġcom . google . android . gms . common . api . Google ApiClient Ċ import Ġcom . google . android . gms . location . Location Services Ċ import Ġcom . google . android . libraries . places . api . Places Ċ import Ġcom . google . android . libraries . places . api . net . Places Client Ċ import Ġcom . vn . nt es co . R Ċ import Ġcom . vn . nt es co . adapter . Place Autocomplete Adapter Ċ import Ġcom . vn . nt es co . utils . Constant Ċ import Ġkotlinx . android . synt hetic . main . address _ dialog .* Ċ import Ġcom . google . android . libraries . places . api . model . Place Ċ import Ġcom . google . android . gms . common . api . ApiException Ċ import Ġcom . google . android . libraries . places . api . net . Fetch Place Request Ċ import Ġcom . vn . nt es co . utils . Dialog Utils Ċ Ċ import Ġjava . util .* ĊĊ Ċ class ĠAdd Address Dialog Ġ: ĠFragment Activity (), ĠPlace Autocomplete Adapter . Place Auto Complete Interface , ĠGoogle ApiClient . On Connection Failed Listener , ĊĠĠĠĠĠĠĠ ĠGoogle ApiClient . Connection Callbacks Ġ{ ĊĊĠĠĠ Ġinternal Ġvar Ġm Adapter : ĠPlace Autocomplete Adapter ? Ġ= Ġnull ĊĠĠĠ Ġlateinit Ġvar Ġplaces Client : ĠPl aces Client ĊĠĠĠ Ġlateinit Ġvar Ġm Google ApiClient : ĠGoogle ApiClient ĊĠĠĠ Ġlateinit Ġvar Ġtxt Address : ĠEditText ĊĠĠĠ Ġvar Ġplace Detail : ĠPlace ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġplace Address : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġis Selected Ġ= Ġfalse ; ĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Google ApiClient . connect () ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Google ApiClient . disconnect () ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . address _ dialog ) ĊĠĠĠĠĠĠĠ Ġtxt Address Ġ= ĠfindViewById ( R . id . txt Address ) ĊĊĠĠĠĠĠĠĠ ĠPl aces . initialize ( this , Ġ" AI za Sy AX j ss HB ly v nt 5 7 SD u By 2 1 9 Qb SG AC w J fr 8 ") ĊĠĠĠĠĠĠĠ Ġplaces Client Ġ= ĠPl aces . create Client ( this ) ĊĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠPlace Autocomplete Adapter ( this , ĠR . layout . item _ address _ suggest , Ġplaces Client , Ġthis ) ĊĠĠĠĠĠĠĠ Ġlist _ search . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġandroidx . recyclerview . widget . Linear LayoutManager ( this @ Add Address Dialog , Ġandroidx . recyclerview . widget . RecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Google ApiClient Ġ= ĠGoogle ApiClient . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Auto Manage ( this , Ġ 0 Ġ/* ĠclientId Ġ*/, Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Api ( Places . GEO _ DATA _ API ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Connection Callbacks ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Connection Failed Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Api ( Location Services . API ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġtxt Address . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( p 0 : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s . toString () Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. clear List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s . toString () Ġ!= Ġ"" Ġ&& Ġm Google ApiClient . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( isSelected ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace Detail Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace Address Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. get Filter ()?. filter ( s . toString ()) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! m Google ApiClient . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( getApplicationContext (), ĠConstants . API _ NOT _ CONNECTED , ĠToast . LENGTH _ SHORT ). show (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ("", Ġ" NOT ĠCONNECT ED "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( p 0 : ĠCharSequence ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġiv Close . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . hide Keyboard ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Select . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( place Address == null Ġ|| Ġplace Address . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Utils . show Dialog ( this , getString ( R . string . address _ not _ select ), null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( place Detail Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Constant . ADDRESS , Ġplace Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Constant . LAT _ L NG , Ġplace Detail ?. lat Lng ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . hide Keyboard ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Place Click ( place : ĠPlace Autocomplete Adapter . Place Autocomplete ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplace Fields Ġ= ĠArrays . asList ( Place . Field . ID , ĠPlace . Field . ADDRESS , ĠPlace . Field . LAT _ L NG ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠFetch Place Request . newInstance ( place . place Id . toString (), Ġplace Fields ) ĊĠĠĠĠĠĠĠ Ġplaces Client . fetch Place ( request ). add On Success Listener Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace Detail Ġ= Ġresponse . place ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace Address Ġ= Ġplace . description ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . hide Keyboard ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtxt Address . setText ( place Address ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Constant . ADDRESS , Ġplace . description ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Constant . LAT _ L NG , Ġplace Detail . lat Lng ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġintent ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ Ġexception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( exception Ġis ĠApiException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstatusCode Ġ= Ġexception . statusCode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Connection Failed ( p 0 : ĠConnection Result ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Connected ( p 0 : ĠBundle ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Connection Sus pended ( p 0 : ĠInt ) Ġ{ ĊĠĠĠ Ġ} Ċ Ċ }