package Ġcom . pad c my an mar . rx java . activities Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . app . AppCompatActivity ; Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġcom . pad c my an mar . rx java . R Ċ import Ġcom . pad c my an mar . rx java . Rx Java App Ċ import Ġcom . pad c my an mar . rx java . data . vo . Restaurant VO Ċ import Ġcom . pad c my an mar . rx java . network . responses . Restaurant ListResponse Ċ import Ġio . reactivex .* Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . annotations . NonNull Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . functions . Consumer Ċ import Ġio . reactivex . functions . Function Ċ import Ġio . reactivex . functions . Predicate Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġio . reactivex . subjects . Publish Subject Ċ Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . util . concurrent . Callable Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Test Subject : ĠPublish Subject < Int > Ġ= ĠPublish Subject . create () ĊĠĠĠ Ġprivate Ġvar Ġm Value Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġbtn In Code One . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhello Rx Java (" the ", Ġ" real ", Ġ" P ADC ", Ġ" :", Ġ" Android ", Ġ" Developer ", Ġ" Course ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn In Code Three . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Call With Rx Java () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn In Code Four . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlong Running Operation With Rx Java () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Test Subject . subscribe ( object Ġ: ĠObserver < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe (@ NonNull Ġd : ĠDis posable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( integer : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( integer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġtv Text . text Ġ= Ġ" Y ay yyy . ĠWe Ġare Ġone ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġtv Text . text Ġ= Ġ" H mm mm , Ġtwo . ĠStill Ġacceptable Ġthough ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġtv Text . text Ġ= Ġ" Ok Ġpeople . ĠW TF . ĠWe Ġare Ġd ri pping Ġoff . ĠThree Ġ? " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġtv Text . text Ġ= Ġ" Listen Ġup , Ġunless Ġwe Ġkeep Ġpush Ġup Ġin Ġnext Ġtime , Ġwe Ġare Ġscre wed ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġtv Text . text Ġ= Ġ" We Ġare Ġscre wed ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtv Text . text Ġ= Ġ" We Ġare Ġoffic ially Ġir relevant Ġnow ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError (@ NonNull Ġe : ĠThrowable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbtn In Code Five . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Value ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Test Subject . onNext ( m Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġaction Ġbar Ġitem Ġclicks Ġhere . ĠThe Ġaction Ġbar Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġso Ġlong ĊĠĠĠĠĠĠĠ Ġ// Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml . ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ settings Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhello Rx Java ( var arg Ġnames : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġname Observable Ġ= ĠObservable . from Array (* names ) ĊĠĠĠĠĠĠĠ Ġname Observable . subscribe ( object Ġ: ĠObserver < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe (@ NonNull Ġd : ĠDis posable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next (@ NonNull Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Rx Java App . TAG , Ġ" Rx Ġ: Ġ\"" Ġ+ Ġname Ġ+ Ġ"\"" Ġ+ Ġ" Ġhas Ġ" Ġ+ Ġname . length Ġ+ Ġ" Ġcharacters .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"${ tv Text . text }\ n ĠRx Ġ: Ġ\"$ name \" Ġ Ġhas Ġ${ name . length } Ġ Ġcharacters ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError (@ NonNull Ġe : ĠThrowable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġname Observable . subscribe ( object Ġ: ĠObserver < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe (@ NonNull Ġd : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"${ tv Text . text }\ n Ġon Subscribe " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next (@ NonNull Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Rx Java App . TAG , Ġ" Rx Ġ: Ġ\"" Ġ+ Ġname Ġ+ Ġ"\"" Ġ+ Ġ" Ġhas Ġ" Ġ+ Ġname . length Ġ+ Ġ" Ġcharacters .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"${ tv Text . text }\ n ĠRx Ġ: Ġ\"$ name \" Ġ Ġhas Ġ${ name . length } Ġ Ġcharacters ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError (@ NonNull Ġe : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"${ tv Text . text }\ n ĠonError Ġ${ e . message }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"${ tv Text . text }\ n ĠonComplete " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġval Ġname Observer Ġ= Ġobject Ġ: ĠObserver < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe (@ NonNull Ġd : ĠDis posable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next (@ NonNull Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"${ tv Text . text }\ n ĠRx Ġ: Ġ\"$ name \" Ġ Ġhas Ġ${ name . length } Ġ Ġcharacters ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError (@ NonNull Ġe : ĠThrowable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġname Log Observer Ġ= Ġobject Ġ: ĠObserver < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe (@ NonNull Ġd : ĠDis posable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next (@ NonNull Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( Rx Java App . TAG , Ġ" Rx Ġ: Ġ\"" Ġ+ Ġname Ġ+ Ġ"\"" Ġ+ Ġ" Ġhas Ġ" Ġ+ Ġname . length Ġ+ Ġ" Ġcharacters .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"${ tv Text . text }\ n ĠLogging " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError (@ NonNull Ġe : ĠThrowable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġname Observable . subscribe ( name Observer ) ĊĠĠĠĠĠĠĠ Ġname Observable . subscribe ( name Log Observer ) ĊĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnetwork Call With Rx Java () Ġ{ ĊĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġrestaurant ListResponse Observable Ġ= Ġget Restaurant ListResponse Observable () ĊĠĠĠĠĠĠĠ Ġrestaurant ListResponse Observable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠObserver < Restaurant ListResponse > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( restaurant ListResponse : ĠRest aurant ListResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( restaurant Ġin Ġrestaurant ListResponse . restaurant List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ tv Text . text }\ n ĠRx ĠApi Ġ: Ġ\" Ġ${ restaurant . title } Ġ+ Ġ\" Ġ Ġhas Ġ Ġ${ restaurant . tag List . size } Ġspecial Ġme als .\ n " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ" onError Ġ: Ġ Ġ${ e . message }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlong Running Operation With Rx Java () Ġ{ ĊĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġinteger Single Ġ= ĠSingle . from Callable ( Callable < Int > Ġ{ Ġoperation () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġinteger Single ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠSingle Observer < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe (@ NonNull Ġd : ĠDis posable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( integer : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"${ tv Text . text }\ n Operation Ġhas Ġfinished . ĠThe Ġvalue Ġis Ġ$ integer \ n " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError (@ NonNull Ġe : ĠThrowable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġrecursive Logger ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġa Bit Complex Rx Operations () Ġ{ ĊĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġrestaurant ListResponse Observable Ġ= Ġget Restaurant ListResponse Observable () ĊĠĠĠĠĠĠĠ Ġrestaurant ListResponse Observable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) Ġ// run Ġvalue Ġcreation Ġcode Ġon Ġa Ġspecific Ġthread Ġ( non - UI Ġthread ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map < List < Restaurant VO >> Ġ{ Ġrestaurant ListResponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestaurant ListResponse . restaurant List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap < Restaurant VO >( object Ġ: ĠFunction < List < Restaurant VO >, ĠObservable Source < Restaurant VO >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( restaurant VO s : ĠList < Restaurant VO >): ĠObservable Source < Restaurant VO > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠObservable . from Iterable < Restaurant VO >( restaurant VO s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġrestaurant Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! TextUtils . isEmpty ( restaurant . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġrestaurant VO Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Rx Java App . TAG , Ġ" Saving Ġrestaurant " Ġ+ Ġrestaurant VO . title Ġ+ Ġ" Ġinfo Ġinto Ġdisk ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġrestaurant Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Rx ĠApi Ġ: Ġ\"" Ġ+ Ġrestaurant . title Ġ+ Ġ"\"" Ġ+ Ġ" Ġhas Ġ" Ġ+ Ġrestaurant . tag List . size Ġ+ Ġ" Ġspecial Ġme als .\ n " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) Ġ// observe Ġthe Ġemitted Ġvalue Ġof Ġthe ĠObservable Ġon Ġan Ġappropriate Ġthread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠObserver < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe (@ NonNull Ġd : ĠDis posable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next (@ NonNull Ġreadable Text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"${ tv Text . text } Ġ$ readable Text " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError (@ NonNull Ġe : ĠThrowable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Restaurant ListResponse Observable (): ĠObservable < Restaurant ListResponse > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrx Java App : ĠRx Java App Ġ= Ġapplication Ġas ĠRx Java App ĊĠĠĠĠĠĠĠ Ġreturn Ġrx Java App . the Api . get Restaurant List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġoperation (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ" Sim ulate " Ġthe Ġdelay . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġ 2 3 4 5 Ġ+ Ġ 1 2 3 4 ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrecursive Logger ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Text . text Ġ= Ġ"${ tv Text . text } Ġ+ ĠTime Ġwait ed Ġ Ġ$ index Ġ) Ġ${ ( index Ġ+ Ġ 5 0 0 )} Ġ\ n " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġ 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecursive Logger ( index Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ 5 0 0 ) ĊĠĠĠ Ġ} Ċ } Ċ