package Ġcom . github . m ari em mez gh ani . inventory Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . github . m ari em mez gh ani . inventory . database . Product Ċ import Ġcom . github . m ari em mez gh ani . inventory . databinding . Product Item View Binding Ċ Ċ class ĠProduct ListAdapter Ġ: ĊĠĠĠ Ġandroidx . recyclerview . widget . ListAdapter < Product , ĠProduct ListAdapter . ViewHolder >( Product Diff Util ()) Ġ{ ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder . from ( parent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġholder . bind ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder Ġprivate Ġconstructor ( val Ġbinding : ĠProduct Item View Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfrom ( parent : ĠViewGroup ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠProduct Item View Binding . inflate ( layout Inflater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠProduct ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . product Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠProduct Diff Util Ġ: ĠDiff Util . Item Callback < Product >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠProduct , Ġnew Item : ĠProduct ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠProduct , Ġnew Item : ĠProduct ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠ Ġ} Ċ Ċ }