/**************************************************************** Ċ Ġ* ĠĠ ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠSal vat ore ĠV ent ura Ġ< sal vo vent ura @ gmail . com > Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠFile : ĠData Record Adapter . kt Ċ Ġ* Ċ Ġ* ĠĠ ĠAuthor : ĠSal vat ore ĠV ent ura Ġ< sal vo vent ura @ gmail . com > Ċ Ġ* ĠĠĠĠ ĠDate : Ġ 2 / 1 9 / 2 0 2 0 Ċ Ġ* Ġ ĠPurpose : ĠAdapter Ġto Ġpopulate Ġthe ĠRecyclerView Ġwith ĠRecord ĠData Ċ Ġ* Ċ Ġ* ĠRevision : Ġ 1 Ċ Ġ* Ġ ĠComment : ĠAn Ġadapter Ġis Ġneeded Ġto Ġinf late Ġthe ĠViewHolder Ġusing Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġthe Ġdata Ġfor Ġeach ĠRecord Ġitem . ĠThe Ġlayout Ġfor Ġthe ĠViewHolder Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġis Ġdescribed Ġin Ġfile Ġ` data record _ view holder . xml ` Ġreferenced Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġhere Ġas Ġ` R . layout . data record _ view holder `. Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ ĠNote Ġhow Ġan ĠOn ClickListener Ġis Ġdefined Ġand Ġattached Ġto Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġevery Ġnew ĠViewHolder Ġto Ġhandle Ġitem - specific Ġactions . Ċ Ġ* Ċ Ġ********************************************************* *******/ Ċ Ġpackage Ġcom . sal vo vent ura . apps . android . room crud . adapters Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . sal vo vent ura . apps . android . room crud . Constants Ċ import Ġcom . sal vo vent ura . apps . android . room crud . Data Record Detail Ċ import Ġcom . sal vo vent ura . apps . android . room crud . R Ċ import Ġcom . sal vo vent ura . apps . android . room crud . data . Data Record Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Data Record Adapter " Ċ Ċ class ĠData Record Adapter Ġinternal Ġconstructor ( context : ĠContext ) Ġ: ĊĊĠĠĠ ĠRecyclerView . Adapter < Data Record Adapter . Data Record ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġinflater : ĠLayoutInflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠ Ġprivate Ġvar Ġitems List Ġ= Ġempty List < Data Record >(). to Mutable List () ĊĊĠĠĠ Ġprivate Ġval ĠonClick Listener : ĠView . OnClickListener ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠRemember Ġthat Ġhis Ġreceives Ġa Ġsingle Ġitem Ġof Ġtype ĠData Record Ġduring Ġiteration ĊĠĠĠĠĠĠĠĠĠĠ Ġfrom : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata record ViewModel . all Items . observe ( this , ĠObserver Ġ{ Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems ?. let Ġ{ Ġadapter . set Items ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠ Ġin Ġthe Ġ` Data Record List Activity ` ĊĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠ ĠonClick Listener Ġ= ĠView . OnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġv . tag Ġas ĠData Record ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Setting ĠonClick Listener Ġfor Ġitem Ġ${ item . id }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠWe Ġalso Ġwant Ġto Ġstart Ġa Ġnew ĠIntent Ġwith ĠExtra ĠData Ġcustomized ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġthe Ġ` id ` Ġof Ġthe Ġassociated Ġitem . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( v . context , ĠData Record Detail :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Constants . DATA _ RECORD _ ID , Ġitem . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . context . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠThis Ġis Ġan Ġ` inner Ġclass ` Ġthat Ġassoci ates Ġassoci ates Ġthe Ġitems Ġin Ġthe ĠViewHolder ĊĠĠĠĠĠĠ Ġlayout Ġwith Ġvariables Ġthat Ġwill Ġbe Ġused Ġinside ĠOn Bind ViewHolder . ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠData Record ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemId : ĠTextView Ġ= ĠitemView . findViewById ( R . id . data record _ view holder _ id ) ĊĠĠĠĠĠĠĠ Ġval Ġitem Record : ĠTextView Ġ= ĠitemView . findViewById ( R . id . data record _ view holder _ record ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠBasic ally , Ġinfl ates Ġthe ĠViewHolder Ġlayout Ġand Ġreturns Ġa ĠViewHolder Ġobject ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠData Record ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= Ġinflater . inflate ( R . layout . data record _ view holder , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠData Record ViewHolder ( item View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠThis Ġis Ġwhere Ġthe ĠViewHolder Ġgets Ġpopulated Ġwith Ġdata Ġfrom Ġthe ĠItem . ĊĠĠĠĠĠĠ ĠPosition Ġinside Ġthe ĠRecyclerView Ġis Ġalso Ġavailable . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠData Record ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġitems List [ position ] ĊĊĠĠĠĠĠĠĠ Ġ// ĠN eeded : Ġwill Ġbe Ġreferenced Ġin Ġthe ĠView . OnClickListener Ġabove ĊĠĠĠĠĠĠĠ Ġholder . item View . tag Ġ= Ġcurrent ĊĊĠĠĠĠĠĠĠ Ġwith ( holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet ĠUI Ġvalues ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemId . text Ġ= Ġcurrent . id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Record . text Ġ= Ġcurrent . record ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġhandlers ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener ( on ClickListener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġset Items ( items : ĠList < Data Record >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items List Ġ= Ġitems . to Mutable List () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġitems List . size Ċ }