package Ġcom . app . catalog . ui . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . app . catalog . commons . call Back s . Diff Util CallBack Ċ import Ġcom . app . catalog . R Ċ import Ġcom . app . catalog . databinding . Adapter Product List Binding Ċ import Ġcom . app . catalog . commons . com municator . Product Item Ċ import Ġcom . app . catalog . domain . entities . Products Ċ import Ġkotlin . properties . Deleg ates Ċ Ċ class ĠProduct ListAdapter Ġ: ĠRecyclerView . Adapter < Product ListAdapter . My ViewHolder >(), ĊĠĠĠ ĠDiff Util CallBack Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġon Product ItemClickListener Ġ: ĠProduct Item ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġitems Ġ: ĠList < Products > Ġby ĠDeleg ates . observable ( emptyList ()) Ġ{ Ġ_, Ġold Item , Ġnew Item Ġ-> ĊĠĠĠĠĠĠĠ Ġauto Notify ( old Item , Ġnew Item ) Ġ{ Ġold , Ġnew Ġ-> Ġold . productId Ġ== Ġnew . productId Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠMy ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠAdapter Product List Binding Ġ= ĠData Binding Util ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( LayoutInflater . from ( parent . context ), ĠR . layout . adapter _ product _ list , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMy ViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠMy ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( items [ position ], on Product ItemClickListener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠGets Ġthe Ġnumber Ġof ĠItems Ġin Ġthe Ġlist ĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitems . size ĊĊĠĠĠ Ġfun Ġset on Project ItemClickListener ( on Product ItemClickListener Ġ: ĠProduct Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Product ItemClickListener Ġ= Ġon Product ItemClickListener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠMy ViewHolder ( private Ġval Ġbinding : ĠAdapter Product List Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( product : ĠProducts , Ġclick Listener : ĠProduct Item ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . product Ġ= Ġproduct ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ Ġclick Listener ?. on Product ItemClickListener ( product ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ