package Ġcom . me a qua . we ij un . ui . dialog Ċ Ċ import Ġandroid . content .* Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view .* Ċ import Ġandroid . widget .* Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 . On Page Change Callback Ċ import Ġcom . h jq . base . Base Dialog Ċ import Ġcom . me a qua . we ij un . R Ċ import Ġcom . me a qua . we ij un . aop . Single Click Ċ import Ġcom . me a qua . we ij un . app . App Adapter Ċ import Ġcom . me a qua . we ij un . ui . adapter .* Ċ import Ġcom . me a qua . we ij un . ui . adapter . Tab Adapter . On Tab Listener Ċ import Ġcom . me a qua . we ij un . ui . dialog . Address Dialog . RecyclerView Adapter . On Select Listener Ċ import Ġcom . tencent . bug ly . crash report . Crash Report Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠĠĠ Ġauthor Ġ: Ġme a qua ĊĊ Ġ* ĠĠĠ Ġtime ĠĠ Ġ: Ġ 2 0 1 9 / 0 2 / 1 2 Ċ Ġ* ĠĠĠ Ġdesc ĠĠ Ġ: Ġ çľģ å¸Ĥ åĮº éĢīæĭ© å¯¹ è¯Ŀ æ¡Ĩ Ċ Ġ* ĠĠĠ Ġdoc ĠĠĠ Ġ: Ġhttps :// ba ij ia hao . baidu . com / s ? id = 1 6 1 5 8 9 4 7 7 6 7 4 1 0 0 7 9 6 7 Ċ Ġ*/ Ċ class ĠAddress Dialog Ġ{ ĊĊĠĠĠ Ġclass ĠBuilder ( context : ĠContext ) Ġ: ĠBase Dialog . Builder < Builder >( context ), ĠOn Tab Listener , ĊĠĠĠĠĠĠĠ ĠRunnable , ĠOn Select Listener , ĠBase Dialog . On Show Listener , ĠBase Dialog . On Dismiss Listener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtitle View : ĠTextView ? Ġby Ġlazy Ġ{ ĠfindViewById ( R . id . tv _ address _ title ) Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġclose View : ĠImageView ? Ġby Ġlazy Ġ{ ĠfindViewById ( R . id . iv _ address _ close ) Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtab View : ĠRecyclerView ? Ġby Ġlazy Ġ{ ĠfindViewById ( R . id . rv _ address _ tab ) Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġview Pager 2 : ĠView Pager 2 ? Ġby Ġlazy Ġ{ ĠfindViewById ( R . id . vp _ address _ pager ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtab Adapter : ĠTab Adapter ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġadapter : ĠRecyclerView Adapter ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcallback : ĠOn Page Change Callback ? ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlistener : ĠOn Listener ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġprovince : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcity : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġarea : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġignore Area Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . address _ dialog ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Height ( getResources (). display Metrics . height Pixels Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠRecyclerView Adapter ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . setOn Select Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 ?. adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener ( close View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter Ġ= ĠTab Adapter ( context , ĠTab Adapter . TAB _ MODE _ SL ID ING , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . addItem ( getString ( R . string . address _ hint )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . setOn Tab Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab View ?. adapter Ġ= Ġtab Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Ġ= Ġobject Ġ: ĠOn Page Change Callback () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Previous Scroll State Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Scroll State Ġ= ĠView Pager . SCROLL _ STATE _ IDLE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Previous Scroll State Ġ= Ġm Scroll State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Scroll State Ġ= Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠView Pager 2 . SCROLL _ STATE _ IDLE Ġ&& Ġtab Adapter . getSelected Position () Ġ!= Ġit . currentItem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Tab Selected ( tab View , Ġit . currentItem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĺ¾ç¤º çľģ ä»½ åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . addItem ( Address Manager . get Province List ( getContext ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Show Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Dismiss Listener ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetTitle (@ String Res Ġid : ĠInt ): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( getString ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetTitle ( text : ĠCharSequence ?): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle View ?. text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġè®¾ç½® é»ĺè®¤ çľģ ä»½ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Province ( province : ĠString ?): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( province )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ apply ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġadapter . getItem ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ== Ġnull Ġ|| Ġdata . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ apply ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdata . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( province Ġ!= Ġdata [ i ] !!. getName ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Address ( 0 , Ġi , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġè®¾ç½® é»ĺè®¤ åŁİ å¸Ĥ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset City ( city : ĠString ?): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck (! ignore Area ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å·²ç»ı å¿½ çķ¥ äºĨ åİ¿ çº§ åĮºåŁŁ çļĦ éĢīæĭ© ï¼Į ä¸įèĥ½ éĢī å®ļ æĮĩå®ļçļĦ åŁİ å¸Ĥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġselection Ġof Ġcount y - level Ġregions Ġhas Ġbeen Ġignored . ĠThe Ġdesign ated Ġcity Ġcannot Ġbe Ġselected " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( city )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ apply ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġadapter . getItem ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ== Ġnull Ġ|| Ġdata . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ apply ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdata . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( city Ġ!= Ġdata [ i ] !!. getName ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éģ¿ å¼Ģ çĽ´ è¾ ĸ å¸Ĥ ï¼Į åĽłä¸º éĢīæĭ© çľģ çļĦæĹ¶åĢĻ å·²ç»ı èĩªåĬ¨ è·³ è¿ĩ å¸Ĥ åĮº äºĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter . getItem ( 1 ) !!. size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Address ( 1 , Ġi , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġä¸į éĢīæĭ© åİ¿ çº§ åĮºåŁŁ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Ignore Area (): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter . getCount () Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å·²ç»ı æĮĩå®ļ äºĨ åŁİ å¸Ĥ ï¼Į åĪĻ ä¸įèĥ½ å¿½ çķ¥ åİ¿ çº§ åĮºåŁŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" C ities Ġhave Ġbeen Ġdesign ated Ġand Ġcount y - level Ġareas Ġcan Ġno Ġlonger Ġbe Ġignored ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġignore Area Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Listener ( listener : ĠOn Listener ?): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ RecyclerView Adapter . On Select Listener ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Selected ( re cyclerView Position : ĠInt , Ġclick Item Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Address ( re cyclerView Position , Ġclick Item Position , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ éĢīæĭ© åľ° åĮº ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtype ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ç±»åŀĭ ï¼Ī çľģ ãĢģ å¸Ĥ ãĢģ åĮº ï¼ī ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġposition ĠĠĠĠĠĠĠĠĠ Ġ çĤ¹åĩ» çļĦ ä½įç½® ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsmooth Scroll ĠĠĠĠĠ Ġæĺ¯åĲ¦ éľĢè¦ģ å¹³ æ»ĳ æ»ļ åĬ¨ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġselected Address ( type : ĠInt , Ġposition : ĠInt , Ġsmooth Scroll : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è®°å½ķ å½ĵåīį éĢīæĭ© çļĦ çľģ ä»½ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovince Ġ= Ġadapter . getItem ( type )! ![ position ] !!. getName () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . setItem ( type , Ġprovince ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . addItem ( getString ( R . string . address _ hint )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . setSelected Position ( type Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . addItem ( Address Manager . get City List ( adapter . getItem ( type )! ![ position ] !!. getNext () !! )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 ?. setCurrent Item ( type Ġ+ Ġ 1 , Ġsmooth Scroll ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ å½ĵåīį éĢīæĭ© çļĦæĺ¯ çĽ´ è¾ ĸ å¸Ĥ ï¼Į å°± çĽ´æİ¥ è·³ è¿ĩ éĢīæĭ© åŁİ å¸Ĥ ï¼Į çĽ´æİ¥ éĢīæĭ© åĮºåŁŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adapter . getItem ( type Ġ+ Ġ 1 ) !!. size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Address ( type Ġ+ Ġ 1 , Ġ 0 , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è®°å½ķ å½ĵåīį éĢīæĭ© çļĦ åŁİ å¸Ĥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcity Ġ= Ġadapter . getItem ( type )! ![ position ] !!. getName () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . setItem ( type , Ġcity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Area ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Selected ( get Dialog (), Ġprovince , Ġcity , Ġarea ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å»¶ è¿ Ł åħ³éĹŃ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ({ Ġdismiss () Ġ}, Ġ 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . addItem ( getString ( R . string . address _ hint )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . setSelected Position ( type Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . addItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAddress Manager . get Area List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . getItem ( type )! ![ position ] !!. getNext () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 ?. setCurrent Item ( type Ġ+ Ġ 1 , Ġsmooth Scroll ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è®°å½ķ å½ĵåīį éĢīæĭ© çļĦ åĮºåŁŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarea Ġ= Ġadapter . getItem ( type )! ![ position ] !!. getName () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . setItem ( type , Ġarea ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Selected ( get Dialog (), Ġprovince , Ġcity , Ġarea ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å»¶ è¿ Ł åħ³éĹŃ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ({ Ġdismiss () Ġ}, Ġ 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Showing ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Single Click ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġ=== Ġclose View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Cancel ( get Dialog ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Tab Adapter . On Tab Listener ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Selected ( re cyclerView : ĠRecyclerView ?, Ġposition : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Pager 2 ?. currentItem Ġ!= Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 ?. currentItem Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . setItem ( position , ĠgetString ( R . string . address _ hint )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovince Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcity Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarea Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tab Adapter . getCount () Ġ> Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . removeItem ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . removeItem ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tab Adapter . getCount () Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . removeItem ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . removeItem ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarea Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcity Ġ= Ġarea ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tab Adapter . getCount () Ġ> Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Adapter . removeItem ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . removeItem ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġarea Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Base Dialog . On Show Listener ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Show ( dialog : ĠBase Dialog ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æ³¨åĨĮ ĠView Pager Ġæ » ĳ åĬ¨ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. let Ġ{ Ġview Pager 2 ?. register On Page Change Callback ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Base Dialog . On Dismiss Listener ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dismiss ( dialog : ĠBase Dialog ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åıį æ³¨åĨĮ ĠView Pager Ġæ » ĳ åĬ¨ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. let Ġ{ Ġview Pager 2 ?. unregister On Page Change Callback ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠRecyclerView Adapter ( context : ĠContext ) Ġ: ĊĠĠĠĠĠĠĠ ĠApp Adapter < Mutable List < Address Bean ?> ? >( context ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlistener : ĠOn Select Listener ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠViewHolder Ġ: ĠApp ViewHolder Ġ( RecyclerView ( getContext ())), ĠOn ItemClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġadapter : ĠAddress Adapter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= ĠgetItem View () Ġas ĠRecyclerView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . is Nested Scrolling Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Params Ġ= ĠRecyclerView . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠAddress Adapter ( getContext ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . setOn ItemClickListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon BindView ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . setData ( getItem ( position )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( re cyclerView : ĠRecyclerView ?, ĠitemView : ĠView ?, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Selected ( get ViewHolder Position (), Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset On Select Listener ( listener : ĠOn Select Listener ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinterface ĠOn Select Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Selected ( re cyclerView Position : ĠInt , Ġclick Item Position : ĠInt ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠAddress Adapter Ġconstructor ( context : ĠContext ) Ġ: ĠApp Adapter < Address Bean ? >( context ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġposition : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= ĠTextView ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . gravity Ġ= ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setBackground Resource ( R . drawable . transparent _ selector ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setTextColor ( Color . parse Color ("# 2 2 2 2 2 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setText Size ( Typed Value . COMPLEX _ UNIT _ PX , Ġget Resources (). get Dimension ( R . dim en . sp _ 1 4 )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . layout Params Ġ= ĠViewGroup . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . set Padding ( getResources (). get Dimension ( R . dim en . dp _ 2 0 ). toInt (), Ġget Resources (). get Dimension ( R . dim en . dp _ 1 0 ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Resources (). get Dimension ( R . dim en . dp _ 2 0 ). toInt (), Ġget Resources (). get Dimension ( R . dim en . dp _ 1 0 ). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( textView ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠViewHolder Ġconstructor ( item View : ĠView ) Ġ: ĠApp ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġm TextView : ĠTextView Ġby Ġlazy Ġ{ ĠitemView Ġas ĠTextView Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon BindView ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm TextView . text Ġ= ĠgetItem ( position ) !!. getName () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠAddress Bean Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ/** Ġï¼Ī çľģ \ å¸Ĥ \ åĮº ï¼ī çļĦ åĲįç§° Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġname : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ/** Ġä¸ĭ ä¸Ģ çº§ çļĦ ĠJson Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġnext : ĠJSONObject ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetName (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġname ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetNext (): ĠJSONObject ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnext ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çľģ å¸Ĥ åĮº æķ°æį® ç®¡çĲĨ ç±» ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġobject ĠAddress Manager Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġèİ·åıĸ çľģ åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Province List ( context : ĠContext ): ĠMutable List < Address Bean ?> ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ çľģ å¸Ĥ åĮº Json æķ°æį® æĸĩä»¶ æĿ¥ æºĲ ï¼ļ https :// github . com / getActivity / Province Json ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= Ġget Province Json ( context ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġjson Array . length () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist : ĠArrayList < Address Bean ?> Ġ= ĠArrayList ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġjson Array . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Address Bean ( jsonObject . getString (" name "), ĠjsonObject )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCrash Report . post Cat ched Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġèİ·åıĸ åŁİ å¸Ĥ åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠjsonObject ĠĠĠĠĠĠĠ Ġ åŁİ å¸Ĥ Json ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget City List ( jsonObject : ĠJSONObject ): ĠMutable List < Address Bean ?> ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist City Ġ= ĠjsonObject . get JSONArray (" city ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġlist City . length () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist : ĠArrayList < Address Bean ?> Ġ= ĠArrayList ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAddress Bean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist City . getJSONObject ( i ). getString (" name "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist City . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCrash Report . post Cat ched Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġèİ·åıĸ åĮºåŁŁ åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠjsonObject ĠĠĠĠĠĠĠ Ġ åĮºåŁŁ ĠJson ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Area List ( jsonObject : ĠJSONObject ): ĠMutable List < Address Bean ?> ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Area Ġ= ĠjsonObject . get JSONArray (" area ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġlist Area . length () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist : ĠArrayList < Address Bean ?> Ġ= ĠArrayList ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Ġ= Ġlist Area . getString ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Address Bean ( string , Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCrash Report . post Cat ched Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġèİ·åıĸ èµĦ äº§ çĽ®å½ķ ä¸ĭéĿ¢ æĸĩä»¶çļĦ åŃĹç¬¦ä¸² ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Province Json ( context : ĠContext ): ĠJSONArray ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream : ĠInputStream Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . open Raw Resource ( R . raw . province ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Stream Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 5 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlength : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( inputStream . read ( buffer ). also Ġ{ Ġlength Ġ= Ġit Ġ} Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Stream . write ( buffer , Ġ 0 , Ġlength ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Stream . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJSONArray ( out Stream . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCrash Report . post Cat ched Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCrash Report . post Cat ched Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Listener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ éĢīæĭ© å®ĮæĪĲ åĲİ åĽŀè°ĥ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġprovince ĠĠĠĠĠĠĠĠĠ Ġ çľģ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcity ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ å¸Ĥ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġarea ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ åĮº ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Selected ( dialog : ĠBase Dialog ?, Ġprovince : ĠString , Ġcity : ĠString , Ġarea : ĠString ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ çĤ¹åĩ» åıĸæ¶Ī æĹ¶ åĽŀè°ĥ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Cancel ( dialog : ĠBase Dialog ?) Ġ{} ĊĠĠĠ Ġ} Ċ }