package Ġcom . mind ork s . rx java 3 . android . examples . ui . operators Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . mind ork s . rx java 3 . android . examples . R Ċ import Ġcom . mind ork s . rx java 3 . android . examples . model . User Ċ import Ġcom . mind ork s . rx java 3 . android . examples . utils . App Constant Ċ import Ġcom . mind ork s . rx java 3 . android . examples . utils . Utils Ċ import Ġio . reactivex . rx java 3 . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . rx java 3 . core . Observable Ċ import Ġio . reactivex . rx java 3 . core . Observable On Subscribe Ċ import Ġio . reactivex . rx java 3 . core . Observer Ċ import Ġio . reactivex . rx java 3 . dis pos ables . Disposable Ċ import Ġio . reactivex . rx java 3 . functions . Bi Function Ċ import Ġio . reactivex . rx java 3 . schedul ers . Schedulers Ċ Ċ class ĠZip Example Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Zip Example Activity " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbtn : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠtextView : ĠTextView ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ example ) ĊĠĠĠĠĠĠĠ Ġbtn Ġ= ĠfindViewById ( R . id . btn ) ĊĠĠĠĠĠĠĠ ĠtextView Ġ= ĠfindViewById ( R . id . textView ) ĊĊĠĠĠĠĠĠĠ Ġbtn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Some Work () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠHere Ġwe Ġare Ġgetting Ġtwo Ġuser Ġlist ĊĠĠĠĠ Ġ* ĠOne , Ġthe Ġlist Ġof Ġcr icket Ġf ans ĊĠĠĠĠ Ġ* ĠAnother Ġone , Ġthe Ġlist Ġof Ġfoot ball Ġf ans ĊĠĠĠĠ Ġ* ĠThen Ġwe Ġare Ġfinding Ġthe Ġlist Ġof Ġusers Ġwho Ġlo ves Ġboth ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdo Some Work () Ġ{ ĊĠĠĠĠĠĠĠ ĠObservable . zip ( get Cr icket F ans Observable (), Ġget Foot ball F ans Observable (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBi Function < List < User >, ĠList < User >, ĠList < User >> Ġ{ Ġcr icket F ans , Ġfoot ball F ans Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Bi Function ĠUtils . filter User Who L ov es Both ( cr icket F ans , Ġfoot ball F ans ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRun Ġon Ġa Ġbackground Ġthread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBe Ġnotified Ġon Ġthe Ġmain Ġthread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( get Observer ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Cr icket F ans Observable (): ĠObservable < List < User >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . create ( Observable On Subscribe < List < User >> Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! e . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . onNext ( Utils . getUser List Who L ov es Cr icket ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}). subscribe On ( Schedulers . io ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Foot ball F ans Observable (): ĠObservable < List < User >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObservable . create ( Observable On Subscribe < List < User >> Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! e . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . onNext ( Utils . getUser List Who L ov es Foot ball ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}). subscribe On ( Schedulers . io ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Observer (): ĠObserver < List < User >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠObserver < List < User >> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Ġon Subscribe Ġ: Ġ" Ġ+ Ġd . is Disposed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( user List : ĠList < User >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . append (" Ġon Next ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . append ( App Constant . LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( user Ġin Ġuser List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . append (" Ġfirst name Ġ: Ġ${ user . firstname }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . append ( App Constant . LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Ġon Next Ġ: Ġ" Ġ+ Ġuser List . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . append (" ĠonError Ġ: Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . append ( App Constant . LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ĠonError Ġ: Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . append (" ĠonComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . append ( App Constant . LINE _ SEPARATOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ĠonComplete ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }