/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠYo unes ĠMe ga ache Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . mega ache . site autocomplete Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . widget . AppCompat Auto Complete TextView Ċ import Ġandroidx . fragment . app . Fragment Ċ Ċ class ĠSite Autocomplete Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS ITE _ REQ _ CODE Ġ= Ġ 1 2 9 2 4 ĊĠĠĠĠĠĠĠ Ġval ĠTAG : ĠString Ġ= ĠSite Autocomplete Fragment :: class . java . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// display Ġmode ĊĠĠĠ Ġprivate Ġvar Ġmode : ĠSite Autocomplete Mode Ġ= ĠSite Autocomplete Mode . FULL SCREEN ĊĊĠĠĠ Ġ// reference Ġto Ġthe Ġautocomplete TextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauto Complete TextView : ĠTextView ĊĊĠĠĠ Ġprivate Ġvar Ġshow Selected Site On Search View Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġshow Full Address Ġ= Ġfalse ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġcallback Ġthat Ġw il Ġl be Ġinvoked Ġwhen Ġuser Ġclicks Ġon Ġan Ġitem Ġfrom Ġthe Ġsuggestions Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġon Site Selected : ĠSite Selection Listener ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( R . layout . autocomplete _ support _ fragment , Ġcontainer , Ġfalse ) Ġas ĠViewGroup ĊĊĠĠĠĠĠĠĠ Ġauto Complete TextView Ġ= Ġv . findViewById ( R . id . edit Text ) ĊĊĠĠĠĠĠĠĠ Ġauto Complete TextView . setOn Focus ChangeListener Ġ{ Ġ_, Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Focus ) Ġstart Autocomplete Activity () ĊĠĠĠĠĠĠĠ Ġ} ĊĊ Ċ // ĠĠĠĠĠĠĠ Ġ// for Ġdebugging Ċ // ĠĠĠĠĠĠĠ ĠHandler ( Looper . my Looper () !! ). post Delayed ({ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġauto Complete TextView . request Focus () Ċ // ĠĠĠĠĠĠĠ Ġ}, Ġ 5 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġv ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġset Ġthe Ġdisplay Ġmode ĊĠĠĠĠ Ġ* Ġ@ param Ġmode ĠSite Autocomplete Mode Ġcan Ġbe Ġeither Ġ[ Site Autocomplete Mode . FULL SCREEN ] ĊĠĠĠĠ Ġ* Ġor Ġ[ Site Autocomplete Mode . OVER LAY ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Activity Mode ( mode : ĠSite Autocomplete Mode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . mode Ġ= Ġmode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġstart Ġthe Ġ[ Site Autocomplete Activity ] Ġin Ġthe Ġspecified Ġmode Ġwhenever Ġthe Ġ[ auto Complete TextView ] Ġis Ġin Ġfocus ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstart Autocomplete Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( context , ĠSite Autocomplete Activity :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġi . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSite Autocomplete Activity . EXTRA _ FLAG _ FULL _ SCREEN , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . mode Ġ== ĠSite Autocomplete Mode . FULL SCREEN ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġi . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSite Autocomplete Activity . TEXT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . auto Complete TextView . text . toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ITE _ REQ _ CODE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġonly Ġwhen Ġthe Ġ[ mode ] Ġequal Ġ[ Site Autocomplete Mode . FULL SCREEN ] ĊĠĠĠĠ Ġ* ĠHide Ġthe Ġkeyboard Ġand Ġinvoke Ġthe Ġcallback Ġsending Ġthe Ġsite Ġthe Ġuser Ġt apped Ġon ĊĠĠĠĠ Ġ* Ġ@ param Ġrequest Code ĠInt ĊĠĠĠĠ Ġ* Ġ@ param ĠresultCode ĠInt ĊĠĠĠĠ Ġ* Ġ@ param Ġdata ĠIntent ? ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġauto Complete TextView . clear Focus () ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠS ITE _ REQ _ CODE ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= ĠSite Autocomplete Activity . EXTRA _ SITE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" received Ġresult Ġ${ temp ?. name }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Site Selected . on Site Selected ( temp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Selected Site On Search View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĠĠ Ġif ( show Full Address ) Ġ"${ temp . name }, Ġ${ temp . format Address }" Ġelse Ġtemp . name . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Complete TextView . setText ( text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġset Ġthe Ġcallback Ġthat Ġwill Ġbe Ġinvoked Ġwhen Ġthe Ġuser Ġclicks Ġon Ġan Ġitem Ġof Ġthe Ġsuggestion Ġlist ĊĠĠĠĠ Ġ* ĠThen Ġinitialize Ġthe Ġview Ġby Ġstarting Ġthe Ġ[ Site Autocomplete Activity ] ĊĠĠĠĠ Ġ* Ġ@ param Ġon Site Selected ĠSite Selection Listener Ġthe Ġcallback ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset On Site Select Listener ( on Site Selected : ĠSite Selection Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Site Selected Ġ= Ġon Site Selected ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġif Ġyou Ġcall Ġthis Ġmethod , Ġwhen Ġthe Ġuser Ġselect Ġa Ġsite Ġ( place ), ĊĠĠĠĠ Ġ* Ġthe Ġname Ġand Ġthe Ġaddress Ġof Ġthat Ġplace Ġwill Ġreplace Ġthe Ġplaceholder Ġ" search Ġsites ..." Ġin Ġsearch Ġview Ġ( autocomplete ĠEditText Ġ) ĊĠĠĠĠ Ġ* Ġ@ param Ġshow Full Address : Ġif Ġtrue Ġthe Ġname Ġand Ġaddress Ġof Ġthe Ġsite Ġwill Ġbe Ġshown , Ġelse Ġonly Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Selected Site On Search View ( show Full Address : Boolean Ġ= Ġfalse Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . show Selected Site On Search View Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġthis . show Full Address Ġ= Ġshow Full Address ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ