package Ġn hd ph u ong . com . manga . features . tags Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . widget . Nested ScrollView Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġn hd ph u ong . com . manga . Constants Ċ import Ġn hd ph u ong . com . manga . Logger Ċ import Ġn hd ph u ong . com . manga . R Ċ import Ġn hd ph u ong . com . manga . data . Tag Ċ import Ġn hd ph u ong . com . manga . data . Tag Filter Ċ import Ġn hd ph u ong . com . manga . data . entity . book . tags . IT ag Ċ import Ġn hd ph u ong . com . manga . features . Search Contract Ċ import Ġn hd ph u ong . com . manga . supports . Support Utils Ċ import Ġn hd ph u ong . com . manga . views . adapters . Pagination Adapter Ċ import Ġn hd ph u ong . com . manga . views . adapters . Tag Item Adapter Ċ import Ġn hd ph u ong . com . manga . views . be come Visible Ċ import Ġn hd ph u ong . com . manga . views . be come Visible If Ċ import Ġn hd ph u ong . com . manga . views . custom s . My Button Ċ import Ġn hd ph u ong . com . manga . views . custom s . My TextView Ċ import Ġn hd ph u ong . com . manga . views . do On Global Layout Ċ import Ġn hd ph u ong . com . manga . views . g one Ċ import Ġkotlin . math . abs Ċ Ċ /* Ċ Ġ* ĠCreated Ġby Ġn hd ph u ong Ġon Ġ 5 / 1 2 / 1 8 . Ċ Ġ*/ Ċ class ĠTags Fragment Ġ: ĠFragment (), ĠTags Contract , ĠTags Contract . View , ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Presenter : ĠTags Contract . Presenter ĊĊĠĠĠ Ġprivate Ġval Ġm Character Count Ġ= ĠConstants . TAG _ PREFIX ES . length ĊĠĠĠ Ġprivate Ġvar Ġm Tag Count String Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Character Adapter : ĠPagination Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Number Adapter : ĠPagination Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Tag Item Adapter : ĠTag Item Adapter ĊĠĠĠ Ġprivate Ġvar Ġm Search Contract : ĠSearch Contract ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbutton First Character : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbutton First Page : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbutton Last Character : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbutton Last Page : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlayout Navigation : ĠConstraint Layout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbutton Tab Alphabet : ĠMy Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbutton Tab Pop ularity : ĠMy Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlabel Count : ĠMy TextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtitle : ĠMy TextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtag Layout Root : ĠNested ScrollView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlist Alphabet : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlist Pages : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlist Tags : ĠRecyclerView ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogger (" Tags Fragment ") ĊĊĠĠĠ Ġoverride Ġfun Ġset Presenter ( presenter : ĠTags Contract . Presenter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Presenter Ġ= Ġpresenter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ tags , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġm Tag Count String Ġ= ĠgetString ( R . string . tags _ count ) ĊĠĠĠĠĠĠĠ ĠsetUp UI ( view ) ĊĠĠĠĠĠĠĠ Ġm Character Adapter Ġ= ĠPagination Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Character Count , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPagination Adapter . Pagination Mode . CHARACTER ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġm Character Adapter . on Character Select Callback Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠPagination Adapter . On Character Select Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( character : ĠChar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . d (" character =$ character ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Presenter . filter By Character ( character ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlist Alphabet . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġm Character Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbecome Visible () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager . HORIZONTAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġm Character Adapter ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Navigation Buttons Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Alphabet . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Visible Item Position Ġ= Ġlayout Manager . findFirst Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Visible Item Position Ġ= Ġlayout Manager . find Last Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisibility Distance Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabs ( last Visible Item Position Ġ- Ġfirst Visible Item Position ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Visible Item Position Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton First Character . be come Visible If ( first Visible Item Position Ġ> Ġ 0 Ġ&& Ġvisibility Distance Ġ< Ġm Character Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Visible Item Position Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Last Character . be come Visible If ( last Visible Item Position Ġ< Ġm Character Count Ġ- Ġ 1 Ġ&& Ġvisibility Distance Ġ< Ġm Character Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo On Global Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Navigation Buttons . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Navigation Buttons . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton Tab Alphabet . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbutton Tab Pop ularity . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbutton First Character . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbutton Last Character . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbutton First Page . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbutton Last Page . setOnClickListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġm Presenter . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . mb _ alphabet Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Tag Filter Type ( Tag Filter . ALPH AB ET ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Tab Button ( true , Ġbutton Tab Alphabet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Tab Button ( false , Ġbutton Tab Pop ularity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . mb _ pop ularity Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Tag Filter Type ( Tag Filter . POP ULAR ITY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Tab Button ( false , Ġbutton Tab Alphabet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Tab Button ( true , Ġbutton Tab Pop ularity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ first Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Character Adapter . jump To First () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Character Adapter . item Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Alphabet . scrollTo Position ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ last Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Character Adapter . jump To Last () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Character Adapter . item Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Alphabet . scrollTo Position ( m Character Adapter . item Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ first _ page Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Number Adapter . jump To First () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Number Adapter . item Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Pages . scrollTo Position ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ last _ page Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Number Adapter . jump To Last () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Number Adapter . item Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Pages . scrollTo Position ( m Number Adapter . item Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Tag Change (@ Tag Ġtag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Presenter . change Current Tag ( tag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Search Input Listener ( search Contract : ĠSearch Contract ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Search Contract Ġ= Ġsearch Contract ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Tag ( tag Type : ĠString , Ġtag Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġtag Type ĊĠĠĠĠĠĠĠ Ġlabel Count . text Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Tag Count String , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSupport Utils . format Big Number ( tag Count . to Long ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrefresh Pages ( page Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( page Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton First Page . g one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Last Page . g one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Pages . g one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Number Adapter Ġ= ĠPagination Adapter ( page Count ) ĊĠĠĠĠĠĠĠ Ġm Number Adapter . on Page Select Callback Ġ= Ġobject Ġ: ĠPagination Adapter . On Page Select Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( page : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . d (" Page Ġ$ page Ġis Ġselected ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Presenter . jump To Page ( page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlist Pages . be come Visible () ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager . HORIZONTAL , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġlist Pages . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġlist Pages . adapter Ġ= Ġm Number Adapter ĊĊĠĠĠĠĠĠĠ Ġval Ġupdate Navigation Buttons Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Pages . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Visible Item Position Ġ= Ġlayout Manager . findFirst Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Visible Item Position Ġ= Ġlayout Manager . find Last Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisibility Distance Ġ= Ġabs ( last Visible Item Position Ġ- Ġfirst Visible Item Position ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Visible Item Position Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton First Page . be come Visible If ( first Visible Item Position Ġ> Ġ 0 Ġ&& Ġvisibility Distance Ġ< Ġpage Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Visible Item Position Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Last Page . be come Visible If ( last Visible Item Position Ġ< Ġpage Count Ġ- Ġ 1 Ġ&& Ġvisibility Distance Ġ< Ġpage Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlist Pages . do On Global Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Navigation Buttons . invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlist Pages . add On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Navigation Buttons . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp Tags List ( source : ĠArrayList < IT ag >, Ġtags : ĠList < IT ag >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! this :: m Tag Item Adapter . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Tag Item Adapter Ġ= ĠTag Item Adapter ( source , Ġobject Ġ: ĠTag Item Adapter . On Tag ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tag Click ( i Tag : ĠI Tag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . d (" Tag : Ġ${ i Tag . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Search Contract ?. on Search Input ted ( i Tag . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Tags . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= Ġobject Ġ: ĠLinearLayoutManager ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Auto Measure Enabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear LayoutManager . orientation Ġ= ĠLinearLayoutManager . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġm Tag Item Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Tag Item Adapter . submit List ( tags ) ĊĠĠĠĠĠĠĠ Ġtoggle Tag List ( tags . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrefresh Tags List ( tags : ĠList < IT ag >) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Tag Item Adapter . submit List ( tags ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m Tag Item Adapter . item Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Layout Root . scrollTo ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtoggle Tag List ( tags . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Loading () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhide Loading () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠisActive (): ĠBoolean Ġ= Ġis Added ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp UI ( root View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton First Character Ġ= Ġroot View . findViewById ( R . id . btn _ first ) ĊĠĠĠĠĠĠĠ Ġbutton First Page Ġ= Ġroot View . findViewById ( R . id . btn _ first _ page ) ĊĠĠĠĠĠĠĠ Ġbutton Last Character Ġ= Ġroot View . findViewById ( R . id . btn _ last ) ĊĠĠĠĠĠĠĠ Ġbutton Last Page Ġ= Ġroot View . findViewById ( R . id . btn _ last _ page ) ĊĠĠĠĠĠĠĠ Ġlayout Navigation Ġ= Ġroot View . findViewById ( R . id . cl _ alphabet _ navigation ) ĊĠĠĠĠĠĠĠ Ġbutton Tab Alphabet Ġ= Ġroot View . findViewById ( R . id . mb _ alphabet ) ĊĠĠĠĠĠĠĠ Ġbutton Tab Pop ularity Ġ= Ġroot View . findViewById ( R . id . mb _ pop ularity ) ĊĠĠĠĠĠĠĠ Ġlabel Count Ġ= Ġroot View . findViewById ( R . id . mt v _ count ) ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġroot View . findViewById ( R . id . mt v _ title ) ĊĠĠĠĠĠĠĠ Ġtag Layout Root Ġ= Ġroot View . findViewById ( R . id . n sv _ container ) ĊĠĠĠĠĠĠĠ Ġlist Alphabet Ġ= Ġroot View . findViewById ( R . id . rv _ alphabet _ pagination ) ĊĠĠĠĠĠĠĠ Ġlist Pages Ġ= Ġroot View . findViewById ( R . id . rv _ pagination ) ĊĠĠĠĠĠĠĠ Ġlist Tags Ġ= Ġroot View . findViewById ( R . id . rv _ tags _ list ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Tag Filter Type ( tag Filter : ĠTag Filter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Presenter . change Tag Filter Type ( tag Filter ) ĊĠĠĠĠĠĠĠ Ġlayout Navigation . visibility Ġ= Ġif Ġ( tag Filter Ġ== ĠTag Filter . ALPH AB ET ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Tab Button ( enabled : ĠBoolean , Ġbutton : ĠMy Button ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . setBackground Resource ( R . drawable . bg _ black _ bottom _ border _ white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . setTextColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . setBackground Resource ( android . R . color . transparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . setTextColor ( Context Compat . getColor ( this , ĠR . color . grey 7 6 7 6 7 6 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle Tag List ( isEmpty : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Pages . visibility Ġ= Ġif Ġ( isEmpty ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠ Ġ} Ċ } Ċ