package Ġcom . k any ide veloper . ed v ora android test . adapters Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . k any ide veloper . ed v ora android test . R Ċ import Ġcom . k any ide veloper . ed v ora android test . databinding . Item Row Binding Ċ import Ġcom . k any ide veloper . ed v ora android test . model . Product Ċ import Ġcom . k any ide veloper . ed v ora android test . util . format Date Ċ Ċ class ĠProducts Adapter Ġ: ĠList Adapter < Product , ĠProducts Adapter . My ViewHolder >( PRODUCT S _ COMP AR ATOR ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPRODUCT S _ COMP AR ATOR Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Product >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old : ĠProduct , Ġa New : ĠProduct ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold . product Name Ġ== Ġa New . product Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old : ĠProduct , Ġa New : ĠProduct ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Ġ== Ġa New ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠMy ViewHolder ( private Ġval Ġbinding : ĠItem Row Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( product : ĠProduct ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . textView ProductName . text Ġ= Ġproduct ?. product Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . textView Brand Name . text Ġ= Ġproduct ?. brand Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . textView Price . text Ġ= Ġproduct ?. price . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . textView Location . text Ġ= Ġ"${ product ?. address ?. state }, Ġ${ product ?. address ?. city }" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . textView Date Value . text Ġ= Ġformat Date ( product ?. date !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . textView Description . text Ġ= Ġproduct . description ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( binding . imageView Product ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( product . image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . image _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . imageView Product ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠMy ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMy ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Row Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠMy ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġholder . bind ( product ) ĊĠĠĠ Ġ} Ċ }