package Ġcom . die k vo ss . room demo Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlinx . android . synt hetic . main . list _ item . view .* Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ class ĠExample ListAdapter ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval ĠonDelete ClickListener : ĠOn Delete ClickListener Ċ ) Ġ: ĠRecyclerView . Adapter < Example ListAdapter . Example ViewHolder >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠID Ġ= Ġ" id " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAUTHOR Ġ= Ġ" author " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBO OK Ġ= Ġ" book " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDESCRIPTION Ġ= Ġ" description " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLAST _ UPDATED Ġ= Ġ" last _ updated " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Delete ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonDelete ClickListener ( my Book : ĠExample Entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġexample List : ĠList < Example Entity > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠExample ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . list _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠExample ViewHolder ( item View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠExample ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexample Ġ= Ġexample List [ position ] ĊĠĠĠĠĠĠĠ Ġholder . setData ( example . book , Ġexample . last Updated , Ġposition ) ĊĠĠĠĠĠĠĠ Ġholder . set Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġexample List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Books ( books : ĠList < Example Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġexample List Ġ= Ġbooks ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠExample ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpos : ĠInt Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetData ( book : ĠString , Ġlast Updated : ĠDate ?, Ġposition : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . tv Author . text Ġ= Ġauthor ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . tv Book . text Ġ= Ġbook ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . tv Last Updated . text Ġ= Ġget Formatted Date ( last Updated ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . pos Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Listeners () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠEdit Item Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( ID , Ġexample List [ pos ]. id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( AUTHOR , Ġexample List [ pos ]. author ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( BOOK , Ġexample List [ pos ]. book ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( DESCRIPTION , Ġexample List [ pos ]. description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( LAST _ UPDATED , Ġget Formatted Date ( example List [ pos ]. last Updated )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( context Ġas ĠActivity ). startActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . UPDATE _ NOTE _ ACTIVITY _ REQUEST _ CODE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . iv Row Delete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete ClickListener . onDelete ClickListener ( example List [ pos ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Formatted Date ( last Updated : ĠDate ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtime Ġ= Ġ" Last ĠUpdated : Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ+= Ġlast Updated ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsdf Ġ= ĠSimpleDateFormat (" HH : mm Ġd ĠM MM , Ġy yyy ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsdf . format ( last Updated ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ" Not ĠFound " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtime ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }