package Ġ Ġcom . android . modern Ċ Ċ import Ġandroid . util . S parseInt Array Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAl bert Ġon Ġ 2 0 2 0 / 2 / 2 6 . Ċ Ġ* ĠDescription : ĠBottom Ġnavigation Ġitem Ġselected Ġto Ġlisten Ċ Ġ*/ Ċ class ĠOn Bottom ItemSelected Listener Ġinternal Ġconstructor ( ĊĠĠĠ Ġview Pager : ĠView Pager 2 , ĊĠĠĠ Ġbn ve : ĠCustom Bottom Navigation View , ĊĠĠĠ Ġsmooth Scroll : ĠBoolean , ĊĠĠĠ Ġlistener : ĠBottom Navigation View . On Navigation ItemSelected Listener ?, ĊĠĠĠ Ġis Navigation Item Click ing : ĠBoolean Ċ ) Ġ: ĠBottom Navigation View . On Navigation ItemSelected Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠBottom Navigation View . On Navigation ItemSelected Listener ? ĊĠĠĠ Ġprivate Ġval Ġview Pager Ref : ĠWeak Reference < ViewPager 2 > ĊĠĠĠ Ġprivate Ġval Ġsmooth Scroll : ĠBoolean ĊĠĠĠ Ġprivate Ġvar Ġis Navigation Item Click ing : ĠBoolean ĊĠĠĠ Ġprivate Ġval Ġitems : ĠS parseInt Array ĊĠĠĠ Ġprivate Ġvar Ġprevious Position Ġ= Ġ- 1 ĊĠĠĠ Ġfun Ġset On Navigation ItemSelected Listener ( listener : ĠBottom Navigation View . On Navigation ItemSelected Listener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Navigation ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġitems [ item . itemId ] ĊĠĠĠĠĠĠĠ Ġif Ġ( previous Position Ġ== Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġlistener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbool Ġ= Ġlistener !!. on Navigation ItemSelected ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! bool ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġview Pager Ġ= Ġview Pager Ref . get () Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġis Navigation Item Click ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġview Pager . setCurrent Item ( items [ item . itemId ], Ġsmooth Scroll ) ĊĠĠĠĠĠĠĠ Ġis Navigation Item Click ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprevious Position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġview Pager Ref Ġ= ĠWeak Reference ( view Pager ) ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġthis . smooth Scroll Ġ= Ġsmooth Scroll ĊĠĠĠĠĠĠĠ Ġthis . is Navigation Item Click ing Ġ= Ġis Navigation Item Click ing ĊĠĠĠĠĠĠĠ Ġval Ġmenu Ġ= Ġbn ve . menu ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġmenu . size () ĊĠĠĠĠĠĠĠ Ġitems Ġ= ĠS parseInt Array ( size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemId Ġ= Ġmenu . getItem ( i ). itemId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . put ( itemId , Ġi ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }