package Ġcom . w zf . w uc arry me . modules . city . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ProgressBar Ċ import Ġcom . w zf . w uc arry me . R Ċ import Ġcom . w zf . w uc arry me . base . Toolbar Activity Ċ import Ġcom . w zf . w uc arry me . common . C Ċ import Ġcom . w zf . w uc arry me . common . Ir relevant Ċ import Ġcom . w zf . w uc arry me . common . utils . Rx Util Ċ import Ġcom . w zf . w uc arry me . common . utils . Shared Preference Util Ċ import Ġcom . w zf . w uc arry me . common . utils . Util Ċ import Ġcom . w zf . w uc arry me . component . Orm Lite Ċ import Ġcom . w zf . w uc arry me . component . Rx Bus Ċ import Ġcom . w zf . w uc arry me . modules . city . adapter . City Adapter Ċ import Ġcom . w zf . w uc arry me . modules . city . domain . City Ċ import Ġcom . w zf . w uc arry me . modules . city . domain . Province Ċ import Ġcom . w zf . w uc arry me . modules . main . domain . City ORM Ċ import Ġcom . w zf . w uc arry me . modules . main . domain . Self Select Update Event Ċ import Ġcom . w zf . w uc arry me . modules . main . domain . Stock Resp Ċ import Ġio . reactivex .* Ċ import Ġio . reactivex . Observable Ċ import Ġjava . util .* Ċ Ċ class ĠChoice City Activity Ġ: ĠToolbar Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm RecyclerView : ĠRecyclerView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm ProgressBar : ĠProgress Bar ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġdata List Ġ= ĠArrayList < Stock Resp . Data Bean >() ĊĠĠĠ Ġprivate Ġvar Ġselected Province : ĠPro vince ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġpro vin ces List Ġ= ĠArrayList < Province >() ĊĠĠĠ Ġprivate Ġval Ġcity List : ĠList < City >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Adapter : ĠCity Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcurrent Level : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġis Checked Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġcan Back (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĊĠĠĠĠĠĠĠ ĠObservable . create ( Observable On Subscribe < Any > Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onNext ( Ir relevant . INSTANCE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Rx Util . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Rx Util . activity Lifecycle ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Choice City Activity . init RecyclerView () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Choice City Activity . query Pro vin ces () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġintent ĊĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġintent . getBoolean Extra ( C . MULTI _ CHECK , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġif Ġ( isChecked Ġ&& ĠShared Preference Util . instance . getBoolean (" Tips ", Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Tips () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlayout Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . activity _ choice _ city ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġm RecyclerView Ġ= ĠfindViewById ( R . id . recyclerview ) ĊĠĠĠĠĠĠĠ Ġm ProgressBar Ġ= ĠfindViewById ( R . id . progress Bar ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m ProgressBar Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ProgressBar !!. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġm RecyclerView !!. layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġm RecyclerView !!. set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠCity Adapter ( this , Ġdata List ) ĊĠĠĠĠĠĠĠ Ġm RecyclerView !!. adapter Ġ= Ġm Adapter ĊĊĠĠĠĠĠĠĠ Ġm Adapter !!. setOn ItemClickListener ( object Ġ: ĠCity Adapter . On RecyclerView ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠView , Ġpos : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Level Ġ== ĠLE VEL _ PROV IN CE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Province Ġ= Ġpro vin ces List [ pos ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm RecyclerView !!. smooth Scroll To Position ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Choice City Activity . query C ities () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( current Level Ġ== ĠLE VEL _ C ITY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcity Ġ= ĠUtil . replace City ( city List ! ![ pos ]. m City Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠO rm Lite . getInstance (). save ( City ORM ( city )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRx Bus . default . post ( Self Select Update Event ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShared Preference Util . instance . set City Name ( city ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRx Bus . default . post ( Change City Event ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Choice City Activity . quit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæŁ¥è¯¢ åħ¨ åĽ½ æīĢæľīçļĦ çľģ ï¼Į ä»İ æķ°æį®åºĵ æŁ¥è¯¢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġquery Pro vin ces () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar !!. title Ġ= Ġ" éĢīæĭ© çľģ ä»½ " ĊĠĠĠĠĠĠĠ ĠFlow able . create ( Flow able On Subscribe < String > Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pro vin ces List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpro vin ces List . addAll ( Weather DB . load Pro vin ces ( DB Manager . getInstance (). get Database ())); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( province Ġin Ġpro vin ces List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onNext ( province . m Pro Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠ Ġ}, ĠBack pressure Strategy . BUFFER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Rx Util . io F ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Rx Util . activity Lifecycle F ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next ( pro Name Ġ-> Ġdata List . add ( pro Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Complete Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ProgressBar !!. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Level Ġ= ĠLE VEL _ PROV IN CE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter !!. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . multi _ city _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu . getItem ( 0 ). isChecked Ġ= Ġis Checked ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== ĠR . id . multi _ check ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġ! isChecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġitem . isChecked ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæŁ¥è¯¢ éĢī ä¸Ń çľģ ä»½ çļĦæīĢæľī åŁİ å¸Ĥ ï¼Į ä»İ æķ°æį®åºĵ æŁ¥è¯¢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġquery C ities () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar !!. title Ġ= Ġ" éĢīæĭ© åŁİ å¸Ĥ " ĊĠĠĠĠĠĠĠ Ġdata List . clear () ĊĠĠĠĠĠĠĠ Ġm Adapter !!. notify DataSet Changed () ĊĊĠĠĠĠĠĠĠ ĠFlow able . create ( Flow able On Subscribe < String > Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġcity List Ġ= ĠWeather DB . load C ities ( DB Manager . getInstance (). get Database (), Ġselected Province . m Pro Sort ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( city Ġin Ġcity List !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onNext ( city . m City Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠ Ġ}, ĠBack pressure Strategy . BUFFER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Rx Util . io F ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Rx Util . activity Lifecycle F ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next ( pro Name Ġ-> Ġdata List . add ( pro Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Complete Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Level Ġ= ĠLE VEL _ C ITY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter !!. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm RecyclerView !!. smooth Scroll To Position ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Level Ġ== ĠLE VEL _ PROV IN CE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquit () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Pro vin ces () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm RecyclerView !!. smooth Scroll To Position ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ ĠDB Manager . getInstance (). close Database (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Tips () Ġ{ ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" å¤ļ åŁİ å¸Ĥ ç®¡çĲĨ æ¨¡å¼ı ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" æĤ¨ çİ°åľ¨ æĺ¯ å¤ļ åŁİ å¸Ĥ ç®¡çĲĨ æ¨¡å¼ı , çĽ´æİ¥ çĤ¹åĩ» åį³åı¯ æĸ°å¢ŀ åŁİ å¸Ĥ . å¦Ĥæŀľ æļĤ æĹ¶ ä¸įéľĢè¦ģ æ·»åĬł ," Ġ+ Ġ" åľ¨ åı³ ä¸Ĭ éĢīé¡¹ ä¸Ń åħ³éĹŃ åį³åı¯ åĥı å¾Ģ å¸¸ ä¸Ģæł· æĵįä½ľ .\ n åĽłä¸º Ġapi Ġæ ¬ ¡ æķ° éĻĲåĪ¶ çļĦ å½±åĵį , å¤ļ åŁİ å¸Ĥ åĪĹè¡¨ æľĢ å¤ļ ä¸īä¸ª åŁİ å¸Ĥ .( à¹ ĳ âĢ² á ´ Ĺ âĢ µ à¹ ĳ )") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" æĺİ çĻ½ ") Ġ{ Ġdialog , Ġ_ Ġ-> Ġdialog . dismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" ä¸į åĨį æıĲç¤º ") Ġ{ Ġ_, Ġ_ Ġ-> ĠShared Preference Util . instance . put Boolean (" Tips ", Ġfalse ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquit () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis @ Choice City Activity . finish () ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( android . R . anim . fade _ in , Ġandroid . R . anim . fade _ out ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLE VEL _ PROV IN CE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLE VEL _ C ITY Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġfun Ġlaunch ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( Intent ( context , ĠChoice City Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ