package Ġorg . quick . library . widgets Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġcom . google . android . material . tabs . Tab Layout Ċ Ċ /** Ċ Ġ* Ġ å¿«éĢŁ æŀĦå»º ViewPager Ċ Ġ* ĠCreated Ġby Ġz oul x Ġon Ġ 2 0 1 7 / 1 1 / 1 4 . Ċ Ġ*/ Ċ Ċ class ĠTab Fragment ViewPager Ġ: Ġandroidx . view pager . widget . ViewPager Ġ{ ĊĠĠĠ Ġvar Ġa Adapter : ĠAdapter ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġoff screen Page Limit Ġ= Ġ 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) ĊĊĠĠĠ Ġfun Ġsetup Data ( fm : Ġandroidx . fragment . app . FragmentManager , Ġvar arg Ġfragments : Ġandroidx . fragment . app . Fragment ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( a Adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Adapter Ġ= ĠAdapter ( fm , Ġ* fragments ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġa Adapter ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Adapter !!. setData List ( fragments . to Mutable List ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Bottom Navigation View ( bottom Navigation View : ĠBottom Navigation View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd On Page ChangeListener ( object Ġ: Ġandroidx . view pager . widget . ViewPager . On Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ= ĠUnit ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Navigation View . selected ItemId Ġ= Ġbottom Navigation View . menu . getItem ( position ). itemId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ= ĠUnit ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbottom Navigation View . setOn Navigation ItemSelected Listener Ġ{ Ġmenu Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. bottom Navigation View . menu . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bottom Navigation View . menu . getItem ( i ). itemId Ġ== Ġmenu . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Item Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Tab Layout ( tab Layout : ĠTab Layout ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Tab Layout ( tab Layout , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Tab Layout ( tab Layout : ĠTab Layout , Ġselector Position : ĠInt , Ġvar arg Ġstrings : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtab Layout . setup With ViewPager ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( tab Layout . child Count Ġ> Ġ 0 ) Ġtab Layout . removeAll Tabs () ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġstrings ) Ġtab Layout . add Tab ( tab Layout . new Tab (). setText ( index )) ĊĠĠĠĠĠĠĠ Ġif Ġ( selector Position Ġ!= Ġ 0 ) Ġtab Layout . get Tab At ( selector Position ) !!. select () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetCurrent Item ( item : ĠInt , Ġsmooth Scroll : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setCurrent Item ( item , Ġsmooth Scroll ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetCurrent Item ( item : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setCurrent Item ( item , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdestroy ( fm : Ġandroidx . fragment . app . FragmentManager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġa Adapter ?. getData List ()?. forEach Ġ{ Ġfm . beginTransaction (). remove ( it ). commit Allow ing State Loss () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetData List (): Mutable List < Fragment >? { ĊĠĠĠĠĠĠĠ Ġreturn Ġa Adapter ?. getData List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetItem ( position : ĠInt ): ĠFragment ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġa Adapter ?. getItem ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠAdapter ( fm : Ġandroidx . fragment . app . FragmentManager , Ġvar arg Ġfragments : Ġandroidx . fragment . app . Fragment ) Ġ: ĊĠĠĠĠĠĠĠ Ġandroidx . fragment . app . Fragment Pager Adapter ( fm ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdata List : ĠMutable List < android x . fragment . app . Fragment >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . data List Ġ= Ġfragments . to Mutable List () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset DataList ( data List : ĠMutable List < android x . fragment . app . Fragment >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . data List Ġ= Ġdata List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetData List () Ġ= Ġdata List ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): Ġandroidx . fragment . app . Fragment Ġ= Ġdata List ! ![ position ] ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ= Ġif Ġ( data List Ġ== Ġnull ) Ġ 0 Ġelse Ġdata List !!. size ĊĠĠĠ Ġ} Ċ }