package Ġcom . mp article . example . h ig g ssh op sample app . adapters Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . mp article . MP article Ċ import Ġcom . mp article . commerce . Commerce Event Ċ import Ġcom . mp article . commerce . Imp ression Ċ import Ġcom . mp article . example . h ig g ssh op sample app . R Ċ import Ġcom . mp article . example . h ig g ssh op sample app . repositories . network . models . Product Ċ Ċ class ĠProduct Items Adapter () Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Product Items Adapter . Product Item ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġon Item Clicked : Ġ(( Product , ĠInt ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġlist Ġ= Ġmutable ListOf < Product >() ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠProduct Item ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . shop _ product _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠProduct Item ViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( view Holder : ĠProduct Item ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewHolder . tv Label . text Ġ= Ġlist [ position ]. label ĊĊĠĠĠĠĠĠĠ ĠG lide . with ( view Holder . item View . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse (" file :/// android _ asset " Ġ+ Ġlist [ position ]. imageUrl )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . product _ image _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. override ( 3 4 3 , 2 6 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( view Holder . iv Image ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= Ġcom . mp article . commerce . Product . Builder ( list [ position ]. label , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist [ position ]. id . toString (), Ġlist [ position ]. price . toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ ĠImp ression (" Products ĠList ", Ġproduct ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCom merce Event . Builder ( it ). build () ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM Particle . getInstance ()?. log Event ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠProduct Item ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent : ĠIntent ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġiv Image : ĠImageView ĊĠĠĠĠĠĠĠ Ġvar Ġtv Label : ĠTextView ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Label Ġ= ĠitemView . findViewById ( R . id . tv _ product _ item _ label ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv Image Ġ= ĠitemView . findViewById ( R . id . product _ item _ picture ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Clicked ?. invoke ( list [ absolute Adapter Position ], Ġabsolute Adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }