/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 1 ĠBy ĠG eek s ĠEmp ire . Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠE li as ĠF azel Ċ Ġ* ĠLast Ġmodified Ġ 8 / 2 0 / 2 1 , Ġ 1 2 : 5 6 ĠPM Ċ Ġ* Ċ Ġ* ĠLicensed ĠUnder ĠMIT ĠLicense . Ċ Ġ* Ġhttps :// opensource . org / licenses / MIT Ċ Ġ*/ Ċ Ċ package Ġco . ge ek semp ire . premium . sto refront . movies . Sto refront For Movies Configurations . Movies Filtering Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . view . animation . Over shoot Interpolator Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġco . ge ek semp ire . premium . sto refront . Database . Preferences . Theme . Theme Type Ċ import Ġco . ge ek semp ire . premium . sto refront . Utils . UI . Animations . Animation Listener Ċ import Ġco . ge ek semp ire . premium . sto refront . Utils . UI . Animations . Circular Re veal Animation Ċ import Ġco . ge ek semp ire . premium . sto refront . Utils . UI . Smooth Scroll ers . Re cycle View Smooth Layout List Ċ import Ġco . ge ek semp ire . premium . sto refront . movies . R Ċ import Ġco . ge ek semp ire . premium . sto refront . movies . Sto refront For Movies Configurations . Data Structure . Movies Data Structure Ċ import Ġco . ge ek semp ire . premium . sto refront . movies . Sto refront For Movies Configurations . Movies Filtering . Filter . Filter Options Item Ċ import Ġco . ge ek semp ire . premium . sto refront . movies . Sto refront For Movies Configurations . Movies Filtering . Filter . Filtering Options Ċ import Ġco . ge ek semp ire . premium . sto refront . movies . Sto refront For Movies Configurations . Movies Filtering . Filter Adapter . Filter Options Adapter Ċ import Ġco . ge ek semp ire . premium . sto refront . movies . databinding . Movies Filtering Layout Binding Ċ import Ġco . ge ek semp ire . premium . sto refront . movies . databinding . Movies Sorting Layout Binding Ċ import Ġcom . google . firebase . firestore . Document Snapshot Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlin . math . absolute Value Ċ Ċ fun Ġmovies Filtering Setup ( context : ĠAppCompatActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Sorting Layout Binding : ĠMov ies Sorting Layout Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding : ĠMov ies Filtering Layout Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Action View : ĠImageView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmiddle Action View : ĠImageView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Action View : ĠImageView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Adapter : ĠFilter Options Adapter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst o refront All Un filtered Contents : ĠArrayList < Document Snapshot >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Type : ĠBoolean Ġ= ĠTheme Type . Theme Light ) Ġ{ ĊĊĠĠĠ Ġwhen Ġ( theme Type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTheme Type . Theme Light Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . popup Blur ry Background . set Overlay Color ( context . getColor ( R . color . premium Light Transparent )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filters Container View . background Ġ= Ġcontext . get Drawable ( R . drawable . filtering _ container _ layer _ light _ movie ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filter Selected View . background Ġ= Ġcontext . get Drawable ( R . drawable . filtering _ selected _ container _ layer _ light _ movie ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠTheme Type . Theme Dark Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . popup Blur ry Background . set Overlay Color ( context . getColor ( R . color . premium Dark Transparent )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filters Container View . background Ġ= Ġcontext . get Drawable ( R . drawable . filtering _ container _ layer _ dark _ movie ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filter Selected View . background Ġ= Ġcontext . get Drawable ( R . drawable . filtering _ selected _ container _ layer _ dark _ movie ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( movies Sorting Layout Binding . root . is Shown ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmovies Sorting Layout Binding . root . start Animation ( Animation Utils . load Animation ( context , ĠR . anim . fade _ out _ movie )) ĊĠĠĠĠĠĠĠ Ġmovies Sorting Layout Binding . root . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġleft Action View . background Ġ= Ġcontext . get Drawable ( R . drawable . action _ center _ glow ing _ movie ) ĊĊĠĠĠĠĠĠĠ Ġleft Action View . image Tint List Ġ= Ġwhen Ġ( theme Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Type . Theme Light Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor State List . valueOf ( context . getColor ( R . color . default _ color _ dark )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Type . Theme Dark Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor State List . valueOf ( context . getColor ( R . color . default _ color _ bright )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠColor State List . valueOf ( context . getColor ( R . color . default _ color _ dark )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmiddle Action View . background Ġ= Ġcontext . get Drawable ( R . drawable . action _ center _ glow ing _ movie ) ĊĊĠĠĠĠĠĠĠ Ġmiddle Action View . image Tint List Ġ= Ġwhen Ġ( theme Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Type . Theme Light Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor State List . valueOf ( context . getColor ( R . color . default _ color _ dark )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Type . Theme Dark Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor State List . valueOf ( context . getColor ( R . color . default _ color _ bright )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠColor State List . valueOf ( context . getColor ( R . color . default _ color _ dark )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( movies Filtering Layout Binding . root . is Shown ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġright Action View . background Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . root . start Animation ( Animation Utils . load Animation ( context , ĠR . anim . fade _ out _ movie )) ĊĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . root . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġright Action View . image Tint List Ġ= Ġwhen Ġ( theme Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Type . Theme Light Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor State List . valueOf ( context . getColor ( R . color . default _ color _ dark )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Type . Theme Dark Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor State List . valueOf ( context . getColor ( R . color . default _ color _ bright )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠColor State List . valueOf ( context . getColor ( R . color . default _ color _ dark )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠ Ġright Action View . background Ġ= Ġcontext . get Drawable ( R . drawable . action _ center _ glow ing _ movie ) ĊĊĠĠĠĠĠĠĠ Ġright Action View . image Tint List Ġ= ĠColor State List . valueOf ( context . getColor ( R . color . default _ color _ game _ dark )) ĊĊĠĠĠĠĠĠĠ Ġval Ġanimation Listener Ġ= Ġobject Ġ: ĠAnimation Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġanimation Finished () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . animation Finished () ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcircular Re veal Animation Ġ= ĠCircular Re veal Animation Ġ( animation Listener ) ĊĠĠĠĠĠĠĠ Ġcircular Re veal Animation . start For View ( context Ġ= Ġcontext , Ġroot View Ġ= Ġmovies Filtering Layout Binding . root , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Position Ġ= Ġ(( right Action View . x ) Ġ+ Ġ( right Action View . width / 2 )). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Position Ġ= Ġ(( right Action View . y ) Ġ+ Ġ( right Action View . height / 2 )). toInt ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġmovies Filtering Layout Binding . root . post Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( filter Options Adapter . filter Options Data . isEmpty ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter By Direct ors Data Process ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst o refront All Un filtered Contents , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Adapter ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filter Director View . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filter Selected View . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation Y By (- ( movies Filtering Layout Binding . filter Studio View . y Ġ- Ġmovies Filtering Layout Binding . filter Director View . y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠOver shoot Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. set Listener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter By Direct ors Data Process ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst o refront All Un filtered Contents , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Adapter ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filter Director View . setTextColor ( context . getColor ( R . color . white )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filter Studio View . setTextColor ( context . getColor ( R . color . default _ color _ bright )) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filter Studio View . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filter Selected View . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation Y By (( movies Filtering Layout Binding . filter Director View . y Ġ- Ġmovies Filtering Layout Binding . filter Studio View . y ). absolute Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠOver shoot Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. set Listener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter By Studio Data Process ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst o refront All Un filtered Contents , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Adapter ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filter Director View . setTextColor ( context . getColor ( R . color . default _ color _ bright )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Filtering Layout Binding . filter Studio View . setTextColor ( context . getColor ( R . color . white )) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } ĊĊ Ċ fun Ġfilter By Direct ors Data Process ( context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst o refront All Un filtered Contents : ĠArrayList < Document Snapshot >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiltering Include : ĠMov ies Filtering Layout Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Adapter : ĠFilter Options Adapter ) Ġ{ ĊĊĠĠĠ Ġif Ġ( sto refront All Un filtered Contents . isNotEmpty ()) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfiltering Include . filtering Options RecyclerView . layout Manager Ġ= ĠRe cycle View Smooth Layout List ( context , ĠRecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġfiltering Include . filtering Options RecyclerView . adapter Ġ= Ġfilter Options Adapter ĊĊĠĠĠĠĠĠĠ Ġfilter Options Adapter . filter Options Type Ġ= ĠFiltering Options . Filter By Director ĊĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Supervisor Job () Ġ+ ĠDispatch ers . IO ). async Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlast Label Ġ= Ġ"- 6 6 6 " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Adapter . filter Options Data . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġst o refront All Un filtered Contents . sorted By Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . data ?. let Ġ{ Ġdocument Snapshot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmovies Data Structure Ġ= ĠMov ies Data Structure ( document Snapshot ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Data Structure . movie Direct ors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. as Flow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . data ?. let Ġ{ Ġdocument Snapshot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmovies Data Structure Ġ= ĠMov ies Data Structure ( document Snapshot ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovies Data Structure . movie Direct ors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flow On ( Dispatch ers . IO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Completion Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect Ġ{ Ġcountry Name Ġ-> ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Name ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( country Name Ġ!= Ġlast Label ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Adapter . filter Options Data . add ( Filter Options Item ( it , Ġnull )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Label Ġ= Ġcountry Name ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Supervisor Job () Ġ+ ĠDispatch ers . Main ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Adapter . notify DataSet Changed () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ fun Ġfilter By Studio Data Process ( context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst o refront All Un filtered Contents : ĠArrayList < Document Snapshot >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiltering Include : ĠMov ies Filtering Layout Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Adapter : ĠFilter Options Adapter ) Ġ= ĠCor outine Scope ( Supervisor Job () Ġ+ ĠDispatch ers . IO ). launch Ġ{ ĊĊĠĠĠ Ġif Ġ( sto refront All Un filtered Contents . isNotEmpty ()) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġfilter Options Data : ĠArrayList < Filter Options Item > Ġ= ĠArrayList < Filter Options Item >() ĊĊĠĠĠĠĠĠĠ Ġfilter Options Adapter . filter Options Data . clear () ĊĊĠĠĠĠĠĠĠ Ġst o refront All Un filtered Contents . forEach Indexed Ġ{ Ġindex , Ġdocument Snapshot Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument Snapshot . data ?. let Ġ{ Ġdocument Snapshot Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmovies Data Structure Ġ= ĠMov ies Data Structure ( document Snapshot ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcsv Movies Studio Ġ= Ġmovies Data Structure . movie St ud ios (). split (",") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcsv Movies Studio . forEach Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Data . add ( Filter Options Item ( it , Ġnull )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfilter Options Adapter . filter Options Data . addAll ( filter Options Data . toSet (). toList ()) ĊĊĠĠĠĠĠĠĠ Ġfilter Options Data . clear () ĊĊĊĠĠĠĠĠĠĠ Ġwith Context ( Supervisor Job () Ġ+ ĠDispatch ers . Main ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Adapter . filter Options Type Ġ= ĠFiltering Options . Filter By Studio ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltering Include . filtering Options RecyclerView . layout Manager Ġ= ĠRe cycle View Smooth Layout List ( context , ĠRecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltering Include . filtering Options RecyclerView . adapter Ġ= Ġfilter Options Adapter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Options Adapter . notify DataSet Changed () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }