package Ġtech . sk ot . components Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . view pager 2 . adapter . Fragment State Adapter Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġtech . sk ot . core . SK Log Ċ import Ġtech . sk ot . view . live . Mutable SK LiveData Ċ Ċ open Ġclass ĠP ager View Impl ( override Ġval Ġscreens : ĠList < Screen View >, Ġselected Page Index : Int ) Ġ: ĠComponent View Impl < AppCompatActivity , ĠFragment , ĠView Pager 2 >(), ĠP ager View Ġ{ ĊĊĠĠĠ Ġvar Ġview Pager : ĠView Pager 2 ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon In fl ated () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on In fl ated () ĊĠĠĠĠĠĠĠ Ġview Pager Ġ= Ġbinding ĊĠĠĠĠĠĠĠ Ġview Pager ?. adapter Ġ= Ġobject Ġ: ĠFragment State Adapter ( fragment Manager , Ġlife Cycle Owner . lifecycle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġscreens . size ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Fragment ( position : ĠInt ): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= Ġscreens [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen View Impl Ġ= ĠScreen View Impl . getInstance ( screen . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( screen View Impl Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġscreen View Impl . create Fragment With Key () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" No ĠView Ġfor Ġkey Ġ${ screen . key } "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSK Log . e (" Pager View Impl Ġ-> ĠNo ĠView Ġfor Ġkey Ġ${ screen . key }", Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclean View References () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Pager Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsuper . clean View References () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġval Ġselected Page Index LD : ĠMutable SK LiveData < Int > Ġ= ĠMutable SK LiveData ( selected Page Index ) ĊĊĠĠĠ Ġoverride Ġvar Ġselected Page Index : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġselected Page Index LD . value ĊĠĠĠĠĠĠĠ Ġset ( new Val ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Page Index LD . post Value ( new Val ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Selected Page Index ( selected Page Index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview Pager ?. post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager ?. currentItem Ġ= Ġselected Page Index ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlink To ( lifecycle Owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . link To ( lifecycle Owner ) ĊĠĠĠĠĠĠĠ Ġselected Page Index LD . observe ( lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Selected Page Index ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }