package Ġio . go los . go los . screens . tags Ċ Ċ import Ġandroid . arch . lifecycle . LiveData Ċ import Ġandroid . arch . lifecycle . Mutable LiveData Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . support . design . widget . Tab Layout Ċ import Ġandroid . support . v 4 . view . ViewPager Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . Simple Item Animator Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġio . go los . go los . R Ċ import Ġio . go los . go los . repository . model . Story Filter Ċ import Ġio . go los . go los . repository . model . Tag Ċ import Ġio . go los . go los . screens . stories . adapters . St ories Pager Adapter Ċ import Ġio . go los . go los . screens . stories . model . Feed Type Ċ import Ġio . go los . go los . screens . tags . adapters . Start Margin Decorator Ċ import Ġio . go los . go los . screens . tags . adapters . Sub scribed Tags Adapter Ċ import Ġio . go los . go los . screens . tags . model . Localized Tag Ċ import Ġio . go los . go los . screens . tags . view model . Filtered St ories By Tag Fragment ViewModel Ċ import Ġio . go los . go los . screens . tags . view model . Filtered St ories By Tag ViewModel Ċ import Ġio . go los . go los . screens . widgets . Go los Fragment Ċ import Ġio . go los . go los . utils .* Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġy uri Ġon Ġ 0 6 . 0 1 . 1 8 . Ċ Ġ*/ Ċ class ĠFilter ed St ories By Tag Fragment Ġ: ĠGo los Fragment (), ĊĠĠĠĠĠĠĠ ĠObserver < Filtered St ories By Tag ViewModel >, ĊĠĠĠĠĠĠĠ ĠRe selection Emitter Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Tags Recycler : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm ViewPager : ĠView Pager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm No Tags Tv : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Pop ular Now Tv : ĠTab Layout ĊĠĠĠ Ġprivate Ġvar Ġm Last Tags Ġ= ĠList ( 0 ) Ġ{ ĠLocal ized Tag ( Tag ("", Ġ 0 . 0 , Ġ 0 L , Ġ 0 L )) Ġ} ĊĠĠĠ Ġprivate Ġval Ġm Re selection LiveData Ġ= ĠMutable LiveData < Int >() ĊĠĠĠ Ġprivate Ġvar Ġm Tags Saved State : ĠParcel able ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm ViewModel : ĠFilter ed St ories By Tag Fragment ViewModel ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġval Ġre select LiveData : ĠLive Data < Int > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġm Re selection LiveData ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġinflater . inflate ( R . layout . f _ filtered _ stories , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġm Tags Recycler Ġ= Ġv . findViewById ( R . id . tags _ recycler ) ĊĠĠĠĠĠĠĠ Ġm ViewPager Ġ= Ġv . findViewById ( R . id . filtered _ pager _ lo ) ĊĠĠĠĠĠĠĠ Ġm No Tags Tv Ġ= Ġv . findViewById ( R . id . no _ tags _ chosen _ tv ) ĊĠĠĠĠĠĠĠ Ġm Pop ular Now Tv Ġ= Ġv . findViewById < Tab Layout >( R . id . tab _ lo ) ĊĠĠĠĠĠĠĠ Ġm ViewPager . off screen Page Limit Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġm Pop ular Now Tv . setup With ViewPager ( m ViewPager ) ĊĊĠĠĠĠĠĠĠ Ġm Pop ular Now Tv . add On Tab Selected Listener ( object Ġ: ĠTab Layout . On Tab Selected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Re selected ( tab : ĠTab Layout . Tab ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Re selection LiveData . value Ġ= Ġm Pop ular Now Tv . selected Tab Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Un selected ( tab : ĠTab Layout . Tab ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Selected ( tab : ĠTab Layout . Tab ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ( m Tags Recycler . item Animator Ġas ĠSimple Item Animator ). supports Change Animations Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Tags Recycler . layout Manager Ġ= ĠMy Linear LayoutManager ( activity !! , ĠLinearLayoutManager . HORIZONTAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġm ViewModel Ġ= ĠViewModel Providers . of ( activity !! ). get ( Filtered St ories By Tag Fragment ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġm ViewModel ?. get Tags LiveData ()?. observe ( this , Ġthis ) ĊĠĠĠĠĠĠĠ Ġm Tags Recycler . adapter Ġ= ĠSub scribed Tags Adapter ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel ?. on Add Tag Button Click ( activity ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġm ViewModel ?. on Tag Click ( activity , Ġit ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġm ViewModel ?. on Tag Delete Click ( activity , Ġit ) Ġ}) ĊĠĠĠĠĠĠĠ Ġm ViewModel ?. onCreate () ĊĠĠĠĠĠĠĠ Ġm Tags Recycler . addItem Decoration ( Start Margin Decorator ()) ĊĠĠĠĠĠĠĠ Ġv . findViewById < View >( R . id . toolbar ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel ?. on Tag Search Click ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġv ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonChanged ( t : ĠFilter ed St ories By Tag ViewModel ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġt ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġit . tags . to ArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . tags . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewPager . adapter Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewPager . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Pop ular Now Tv . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm No Tags Tv . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Localized Tag ( Tag ("", Ġ 0 . 0 , Ġ 0 L , Ġ 0 L ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( m Tags Recycler . adapter Ġas ĠSub scribed Tags Adapter ). tags Ġ= Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewPager . setView Visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Pop ular Now Tv . setView Visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm No Tags Tv . setView G one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( 0 , ĠLocal ized Tag ( Tag ("", Ġ 0 . 0 , Ġ 0 L , Ġ 0 L ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( m Tags Recycler . adapter Ġas ĠSub scribed Tags Adapter ). tags Ġ= Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Tags Saved State Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Tags Recycler . layout Manager . on Restore InstanceState ( m Tags Saved State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Tags Saved State Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m Last Tags . compare Contents ( it . tags )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Last Tags Ġ= Ġit . tags ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstory Filter Ġ= ĠStory Filter ( it . tags . map Ġ{ Ġit . tag . name Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewPager . adapter Ġ= ĠSt ories Pager Adapter ( activity Ġ?: Ġreturn , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild FragmentManager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Pair ( Feed Type . POP ULAR , Ġstory Filter ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( Feed Type . NEW , Ġstory Filter ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( Feed Type . ACT UAL , Ġstory Filter ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewPager . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewPager . currentItem Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewPager . currentItem Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpar c Ġ= Ġm Tags Recycler . layout Manager . on Save InstanceState () ĊĠĠĠĠĠĠĠ Ġout State . put Parcelable (" Filtered St ories By Tag Fragment ", Ġpar c ) ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ViewState Restore d ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on ViewState Restore d ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġm Tags Saved State Ġ= ĠsavedInstanceState ?. get Parcelable (" Filtered St ories By Tag Fragment ") ĊĠĠĠ Ġ} Ċ }