package Ġcom . xy q . g ay weather kotlin Ċ Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġcom . xy q . g ay weather kotlin . cont ants . Constants Ċ import Ġcom . xy q . g ay weather kotlin . cont ants . Data Query Type Ċ import Ġcom . xy q . g ay weather kotlin . db . City Ċ import Ġcom . xy q . g ay weather kotlin . db . Count y Ċ import Ġcom . xy q . g ay weather kotlin . db . Province Ċ import Ġcom . xy q . g ay weather kotlin . util . Http Util Ċ import Ġcom . xy q . g ay weather kotlin . util . Utility Ċ import Ġokhttp 3 . Call Ċ import Ġokhttp 3 . Callback Ċ import Ġokhttp 3 . Response Ċ import Ġorg . lite pal . crud . Data Support Ċ import Ġjava . io . IOException Ċ import Ġjava . util . ArrayList Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġcreated Ġby Ġxy q Ċ Ġ* Ġcreated Ġon Ġ 2 0 1 8 / 7 / 4 Ċ Ġ*/ Ċ class ĠChoose Area Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġprogress Dialog : ĠProgress Dialog ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġtitle Text : ĠTextView ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġiv Back : ĠImageView ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar ĠlistView : ĠListView ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġadapter : ĠArray Adapter < String >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġdata List Ġ= ĠArrayList < String >() ĊĊĠĠĠ Ġprivate Ġvar Ġprovince List : ĠList < Province >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġcity List : ĠList < City >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġcount y List : ĠList < Count y >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġselected Province : ĠPro vince ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġselected City : ĠCity ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Level : ĠData Query Type Ġ= ĠData Query Type . PROV IN CE ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater ?, Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater !!. inflate ( R . layout . choose _ area , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġtitle Text Ġ= Ġview . findViewById < TextView >( R . id . tv _ title ) ĊĠĠĠĠĠĠĠ Ġiv Back Ġ= Ġview . findViewById ( R . id . iv _ back ) ĊĠĠĠĠĠĠĠ ĠlistView Ġ= Ġview . findViewById ( R . id . list _ view ) ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠArray Adapter ( activity , Ġandroid . R . layout . simple _ list _ item _ 1 , Ġdata List ) ĊĠĠĠĠĠĠĠ ĠlistView !!. adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠlistView !!. on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġparent , Ġview , Ġposition , Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Level Ġ== ĠData Query Type . PROV IN CE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Province Ġ= Ġprovince List ! ![ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery C ities () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( current Level Ġ== ĠData Query Type . C ITY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected City Ġ= Ġcity List ! ![ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Count ies () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( current Level Ġ== ĠData Query Type . COUN TY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Id Ġ= Ġcount y List ! ![ position ]. weather Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠMainActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠWeather Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" weather _ id ", Ġweather Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ/* else Ġif Ġ( activity Ġis ĠWeather Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġas ĠWeather Activity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . drawer Layout . close Draw ers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . swipe Refresh Layout . set Refresh ing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . request Weather ( weather Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġiv Back !!. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Level Ġ== ĠData Query Type . COUN TY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery C ities () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( current Level Ġ== ĠData Query Type . C ITY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Pro vin ces () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġquery Pro vin ces () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæŁ¥è¯¢ çľģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġquery Pro vin ces () Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Text !!. setText (" ä¸ŃåĽ½ ") ĊĠĠĠĠĠĠĠ Ġiv Back !!. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġprovince List Ġ= ĠData Support . findAll ( Province :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( province List !!. size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( province Ġin Ġprovince List !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( province . province Name !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify AndSet Level ( Data Query Type . PROV IN CE ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= ĠConstants . BASE _ URL Ġ+ Ġ" china " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery From Server ( address , ĠData Query Type . PROV IN CE ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæŁ¥è¯¢ åŁİ å¸Ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġquery C ities () Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Text !!. setText ( selected Province !!. province Name ) ĊĠĠĠĠĠĠĠ Ġiv Back !!. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġcity List Ġ= ĠData Support . where (" province id Ġ= Ġ?", Ġselected Province !!. id . toString ()). find ( City :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( city List !!. size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( city Ġin Ġcity List !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( city . city Name !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify AndSet Level ( Data Query Type . C ITY ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprovince Code Ġ= Ġselected Province !!. province Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= ĠConstants . BASE _ URL Ġ+ Ġ" china /" Ġ+ Ġprovince Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery From Server ( address , ĠData Query Type . C ITY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæŁ¥è¯¢ åĮº åİ¿ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġquery Count ies () Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Text !!. setText ( selected City !!. city Name ) ĊĠĠĠĠĠĠĠ Ġiv Back !!. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġcount y List Ġ= ĠData Support . where (" city id Ġ= Ġ?", Ġselected City !!. id . toString ()). find ( Count y :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( county List !!. size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( county Ġin Ġcount y List !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( county . county Name !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify AndSet Level ( Data Query Type . COUN TY ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprovince Code Ġ= Ġselected Province !!. province Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcity Code Ġ= Ġselected City !!. city Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= ĠConstants . BASE _ URL Ġ+ Ġ" china /" Ġ+ Ġprovince Code Ġ+ Ġ"/" Ġ+ Ġcity Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery From Server ( address , ĠData Query Type . COUN TY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġnotify AndSet Level ( level : ĠData Query Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter !!. notify DataSet Changed () ĊĠĠĠĠĠĠĠ ĠlistView !!. setSelection ( 0 ) ĊĠĠĠĠĠĠĠ Ġcurrent Level Ġ= Ġlevel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery From Server ( address : ĠString , Ġtype : ĠData Query Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress Dialog () ĊĠĠĠĠĠĠĠ ĠHttp Util . send Ok HttpRequest ( address , Ġobject Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" åĬłè½½ å¤±è´¥ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Text Ġ= Ġresponse . body (). string () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Data Query Type . PROV IN CE Ġ== Ġtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠUtility . handle Province Response ( responseText ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Data Query Type . C ITY Ġ== Ġtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠUtility . handle City Response ( responseText , Ġselected Province !!. id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Data Query Type . COUN TY Ġ== Ġtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠUtility . handle Count y Response ( responseText , Ġselected City !!. id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Data Query Type . PROV IN CE Ġ== Ġtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Pro vin ces () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Data Query Type . C ITY Ġ== Ġtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery C ities () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Data Query Type . COUN TY Ġ== Ġtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Count ies () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Progress Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Dialog Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog Ġ= ĠProgress Dialog ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. setMessage (" æŃ£åľ¨ åĬłè½½ ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. set Canceled On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprogress Dialog !!. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclose Progress Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Dialog Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }