package Ġio . mat te op elle gr ino . page d grid Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . support . v 4 . view . ViewPager Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġio . mat te op elle gr ino . page d grid . adapter . Grid Adapter Ċ import Ġio . mat te op elle gr ino . page d grid . grid . Grid Ċ import Ġkotlinx . android . synt hetic . main . page d grid view . view .* Ċ import Ġkotlin . properties . Deleg ates ĊĊ Ċ /** Ċ Ġ* ĠContains Ġa Ġ[ ViewPager ] Ġand Ġa Ġ[ com . rd . Page Indicator View ]. Ċ Ġ* ĠThe Ġproperty Ġ[ pages ] Ġrepresents Ġthe Ġmodel Ġrendered Ġas Ġa Ġcollection Ġof Ġpages , Ġeach Ġone Ġcontains Ġa Ġgrid . Ċ Ġ* ĠSet Ġthis Ġproperty Ġto Ġchange Ġwhat Ġ[ Paged GridView ] Ġshould Ġrender , Ċ Ġ* Ġsee Ġ[ Grid ] Ġand Ġ[ it . mat te op elle gr ino . page d grid . element . Element ] Ġfor Ġdetails . Ċ Ġ* ĠThis Ġview Ġas Ġa Ġparticular Ġbehaviour Ġfor Ġlandscape Ġmode : Ġthe Ġgrid Ġalways Ġrotate Ġclock wise . Ċ Ġ* ĠFor Ġexample , Ġin Ġpor trait Ġmode Ġan Ġelement Ġposition ed Ġat Ġ( 3 , 1 ) Ġ( 3 Ġcolumn Ġindex , Ġ 1 Ġrow Ġindex ), Ċ Ġ* Ġin Ġlandscape Ġmode Ġwill Ġbe Ġon Ġthe Ġ( 2 , Ġ 3 ) Ġcell . Ċ Ġ* ĠThis Ġhas Ġbeen Ġimplemented Ġto Ġmaintain Ġthe Ġsame Ġposition Ġof Ġevery Ġelement Ġwhatever Ġthe Ġorientation Ġof Ġthe Ġdevice Ġis . Ċ Ġ* ĠThe Ġorientation Ġmust Ġbe Ġspecified Ġmanually Ġusing Ġthe Ġorientation Ġattribute Ġthrough ĠX Ml . Ċ Ġ* ĠPlease Ġnote : ĠThis Ġorientation Ġ( app : orientation ) Ġis Ġdifferent Ġfrom Ġandroid : orientation , Ċ Ġ* Ġwhich Ġhas Ġanother Ġeffect . Ċ Ġ*/ Ċ class ĠP aged GridView ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġandroid . support . constraint . Constraint Layout ( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Pager : ĠView Pager ĊĠĠĠ Ġvar ĠcurrentPage : ĠInt ĊĠĠĠĠĠĠĠ Ġset ( value ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . currentItem Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġview Pager . currentItem ĊĊĠĠĠ Ġvar Ġadapter Ġby ĠDeleg ates . observable ( Grid Adapter ( array Of ())){ Ġ_, Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠ ĠnewValue . page Indicator Ġ= Ġpage Indicator ĊĠĠĠĠĠĠĠ ĠnewValue . page Indicator ?. set ViewPager ( view Pager ) ĊĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= ĠnewValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġthis ( context , Ġnull ) ĊĊĠĠĠ Ġinit { ĊĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ). inflate ( R . layout . page d grid view , Ġthis , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġview Pager Ġ= ĠfindViewById ( R . id . view Pager ) ĊĠĠĠĠĠĠĠ Ġadapter . page Indicator Ġ= ĠfindViewById ( R . id . page Indicator ) ĊĠĠĠĠĠĠĠ Ġadapter . page Indicator ?. set ViewPager ( view Pager ) ĊĊĠĠĠĠĠĠĠ Ġval Ġarr Ġ= Ġcontext . theme . obtain Styled Attributes ( attrs , ĠR . style able . Paged GridView , Ġ 0 , 0 ) ĊĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Indicator . un selected Color Ġ= Ġarr . getColor ( R . style able . Paged GridView _ page Indicator Un selected , ĠColor . GRAY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Indicator . selected Color Ġ= Ġarr . getColor ( R . style able . Paged GridView _ page Indicator Selected , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . orientation Ġ= Ġarr . getInt ( R . style able . Paged GridView _ orientation , ĠGrid Adapter . OR IENTATION _ POR TRA IT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . is Animation Enabled Ġ= Ġarr . getBoolean ( R . style able . Paged GridView _ animation Enabled , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} finally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarr . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} Ċ Ċ }