package Ġcom . mart dev . android . my gallery . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Search View Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġcom . google . android . material . tabs . Tab Layout Ċ import Ġcom . google . android . material . tabs . Tab Layout Mediator Ċ import Ġcom . mart dev . android . my gallery . R Ċ import Ġcom . mart dev . android . my gallery . adapter . My Gallery Pager Adapter Ċ import Ġcom . mart dev . android . my gallery . adapter . PH OTO _ PAGE _ INDEX Ċ import Ġcom . mart dev . android . my gallery . adapter . VIDEO _ PAGE _ INDEX Ċ import Ġcom . mart dev . android . my gallery . databinding . Fragment ViewPager Binding Ċ import Ġcom . mart dev . android . my gallery . utils .* Ċ import Ġcom . mart dev . android . my gallery . view model . Photo ViewModel Ċ import Ġcom . mart dev . android . my gallery . view model . Video ViewModel Ċ import Ġjava . lang . Index OutOfBoundsException Ċ Ċ class ĠMy Gallery Pager Fragment Ġ: ĠFragment (){ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment ViewPager Binding ĊĠĠĠ Ġprivate Ġval Ġphoto ViewModel : ĠPhoto ViewModel Ġby Ġactivity ViewModels Ġ{ Ġget ViewModel Factory () Ġ} ĊĠĠĠ Ġprivate Ġval Ġvideo ViewModel : ĠVideo ViewModel Ġby Ġactivity ViewModels Ġ{ Ġget ViewModel Factory () Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtab Layout : ĠTab Layout ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . fragment _ view _ pager , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġtab Layout Ġ= Ġbinding . tabs ĊĠĠĠĠĠĠĠ Ġval Ġview Pager Ġ= Ġbinding . view Pager ĊĊĊĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= ĠMy Gallery Pager Adapter ( this ) ĊĊĠĠĠĠĠĠĠ ĠTab Layout Mediator ( tab Layout , Ġview Pager ) Ġ{ tab , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab . setIcon ( get Tab Icon ( position )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab . text Ġ= Ġget Tab Title ( position ) ĊĠĠĠĠĠĠĠ Ġ}. attach () ĊĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= Ġbinding . toolbar ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Tab Icon ( position : ĠInt ) Ġ= Ġwhen ( position ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPH OTO _ PAGE _ INDEX Ġ-> ĠR . drawable . photo _ tab _ selector ĊĠĠĠĠĠĠĠ ĠV IDE O _ PAGE _ INDEX Ġ-> ĠR . drawable . video _ tab _ selector ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIndex OutOfBoundsException () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Tab Title ( position : ĠInt ): ĠString ? Ġ= Ġwhen ( position ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPH OTO _ PAGE _ INDEX Ġ-> Ġ" Photo " ĊĠĠĠĠĠĠĠ ĠV IDE O _ PAGE _ INDEX Ġ-> Ġ" Video " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . keyword _ search , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsearch Item Ġ= Ġmenu . find Item ( R . id . menu _ item _ search ) ĊĠĠĠĠĠĠĠ Ġval Ġsearch View Ġ= Ġsearch Item . action View Ġas ĠSearch View ĊĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( query Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( tab Layout . selected Tab Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPH OTO _ PAGE _ INDEX Ġ-> Ġphoto ViewModel . getData ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV IDE O _ PAGE _ INDEX Ġ-> Ġvideo ViewModel . getData ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . on Action View Collapsed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} Ċ }