package Ġcom . example . catalog o productos . adapter Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . catalog o productos . R Ċ import Ġcom . example . catalog o productos . data . Product Ċ import Ġkotlinx . android . synt hetic . main . item _ product . view .* Ċ Ċ class ĠProduct Adapter ( private Ġval Ġproducts : ĠMutable List < Product >, Ġprivate Ġval Ġcallback : Ġ( Product , ĠString ) Ġ-> ĠUnit ): ĠRecyclerView . Adapter < Product Adapter . Product ViewHolder >() Ġ{ ĊĊĠĠĠ Ġclass ĠProduct ViewHolder ( item View : ĠView , Ġval Ġcallback : Ġ( Product , ĠString ) Ġ-> ĠUnit ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠProduct ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . name _ product . text Ġ= Ġitem . name ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . description _ product . text Ġ= Ġitem . description ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . stock _ product . text Ġ= Ġitem . stock . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . delete _ product . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( item , Ġ" Delete ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . edit _ product . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( item , Ġ" Edit ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . add _ stock . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( item , Ġ" Plus ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . remove _ stock . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( item , Ġ" Minus ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠProduct ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . item _ product , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠProduct ViewHolder ( view , Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠProduct ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( products [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproducts . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Product Ġ( product : ĠProduct ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproducts . add ( product ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Product Ġ( product : ĠProduct ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproducts . remove ( product ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġedit Product Ġ( product : ĠProduct , ĠnewName : ĠString , Ġnew Description : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġproducts . indexOf ( product ) ĊĠĠĠĠĠĠĠ Ġproducts [ index ]. name Ġ= ĠnewName ĊĠĠĠĠĠĠĠ Ġproduct . description Ġ= Ġnew Description ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange Stock ( product : ĠProduct , Ġnumber : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġproducts . indexOf ( product ) ĊĠĠĠĠĠĠĠ Ġproducts [ index ]. stock Ġ= Ġnumber ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ }