package Ġcom . example . re union . view Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . example . re union . R Ċ import Ġcom . example . re union . base . Base Activity Ċ import Ġcom . example . re union . base . Base Fragment Ċ import Ġcom . example . re union . customize . tab . Tab Layout Ċ import Ġcom . example . re union . customize . tab . Tab Layout Mediator Ċ import Ġcom . example . re union . databinding . Fragment Home Binding Ċ import Ġcom . example . re union . view . adapter . Home Adapter Ċ import Ġcom . example . re union . view _ model . Home ViewModel Ċ import Ġkotlinx . android . synt hetic . main . fragment _ home .* Ċ Ċ class ĠHome Fragment : Base Fragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Binding : Fragment Home Binding ĊĊĠĠĠ Ġval ĠtextView : TextView Ġby Ġlazy Ġ{ ĠLayoutInflater . from ( context ). inflate ( R . layout . text _ view , null ) Ġas ĠTextView Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm ViewModel : ĠHome ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġset ViewModel ( activity Ġas ĠBase Activity , ĠHome ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding Ġ= ĠData Binding Util . inflate ( in flater , R . layout . fragment _ home , container , false ) ĊĠĠĠĠĠĠĠ Ġm Binding . lifecycle Owner Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġreturn Ġm Binding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġm Binding . viewModel Ġ= Ġm ViewModel ĊĠĠĠĠĠĠĠ Ġm Binding . activity Ġ= Ġactivity Ġas ĠHome Activity ĊĠĠĠĠĠĠĠ Ġinit Fragments () ĊĠĠĠĠĠĠĠ Ġhome View pager . setCurrent Item ( m ViewModel . currentIndex , false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Fragments (){ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠHome Adapter ( this , m ViewModel . fragment List ) ĊĠĠĠĠĠĠĠ Ġhome View pager . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ ĠTab Layout Mediator ( home Tab Layout , home View pager ){ Ġtab , Ġposition -> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġadapter . ids ! ![ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab . text Ġ= Ġwhen ( id ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 L Ġ-> Ġadapter . title List [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 L Ġ-> Ġadapter . title List [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 L Ġ-> Ġadapter . title List [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 L Ġ-> Ġadapter . title List [ 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 L Ġ-> Ġadapter . title List [ 4 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġadapter . title List [ 5 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. attach () ĊĊĊĠĠĠĠĠĠĠ Ġhome Tab Layout . get Tab At ( 1 )?. custom View Ġ= ĠtextView . apply Ġ{ Ġtext Ġ= Ġhome Tab Layout . get Tab At ( 1 )?. text Ġ} ĊĠĠĠĠĠĠĠ Ġhome Tab Layout . add On Tab Selected Listener ( object Ġ: Tab Layout . Base On Tab Selected Listener < Tab Layout . Tab >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Selected ( tab : ĠTab Layout . Tab ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab ?. custom View Ġ= ĠtextView . apply Ġ{ Ġtext Ġ= Ġtab ?. text Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Un selected ( tab : ĠTab Layout . Tab ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab ?. custom View Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Re selected ( var 1 : ĠTab Layout . Tab ?) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġm ViewModel . is Home Update . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome View pager . invalidate Item Decor ations () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . ids Ġ= Ġm ViewModel . ids ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( home View pager . currentItem Ġ!= Ġm ViewModel . currentIndex ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome View pager . currentItem Ġ= Ġm ViewModel . currentIndex ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm ViewModel . update Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġm ViewModel . currentIndex Ġ= Ġhome View pager . currentItem ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} Ċ }