package Ġcom . mobile health sport s . v accine pass . ui . main . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . mobile health sport s . v accine pass . R Ċ import Ġcom . mobile health sport s . v accine pass . business . models . Appointment Ċ import Ġcom . mobile health sport s . v accine pass . databinding . ListItem Appointment Binding Ċ import Ġcom . mobile health sport s . v accine pass . databinding . ListItem Header Binding Ċ import Ġcom . mobile health sport s . v accine pass . databinding . ListItem V accine Binding Ċ import Ġcom . mobile health sport s . v accine pass . ui . main . calendar . Event Ċ import Ġcom . mobile health sport s . v accine pass . ui . main . user .* Ċ import Ġjava . lang . IllegalStateException ĊĊĊĊ Ċ class ĠItem View Adapter ( val ĠonClick : Ġ( Event ) Ġ-> ĠUnit ) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġitems Ġ: ĠMutable List < ListItem > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġ// ĠThis Ġis Ġyour ĠViewHolder Ġclass Ġthat Ġhelps Ġto Ġpopulate Ġdata Ġto Ġthe Ġview ĊĠĠĠ Ġinner Ġclass ĠV accine ViewHolder ( private Ġval Ġbinding : ĠListItem V accine Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( v accine Item : ĠV accine Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . item Ġ= Ġv accine Item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// binding . execute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠHeader ViewHolder ( private Ġval Ġbinding : ĠListItem Header Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( header : ĠHeader Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . item Ġ= Ġheader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// binding . execute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠAppointment ViewHolder ( private Ġval Ġbinding : ĠListItem Appointment Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( appointment Item : ĠAppointment Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . item Ġ= Ġappointment Item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// binding . execute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠThis Ġmethod Ġcreates Ġviews Ġfor Ġthe ĠRecyclerView Ġby Ġinfl ating Ġthe Ġlayout ĊĠĠĠ Ġ// ĠInto Ġthe Ġview Hold ers Ġwhich Ġhelps Ġto Ġdisplay Ġthe Ġitems Ġin Ġthe ĠRecyclerView ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġview Ġyou Ġhave Ġcreated Ġfor Ġthe Ġlist Ġrows Ġhere ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList ItemType . HEADER . ordinal Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding : ĠListItem Header Binding Ġ= ĠData Binding Util . inflate ( layout Inflater , ĠR . layout . list _ item _ header , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHeader ViewHolder ( binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList ItemType . V ACC INE . ordinal Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding : ĠListItem V accine Binding Ġ= ĠData Binding Util . inflate ( layout Inflater , ĠR . layout . list _ item _ v accine , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV accine ViewHolder ( binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList ItemType . AP POINT MENT . ordinal Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding : ĠListItem Appointment Binding Ġ= ĠData Binding Util . inflate ( layout Inflater , ĠR . layout . list _ item _ appointment , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppointment ViewHolder ( binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" unsupported Ġitem Ġtype ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( view Holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Item Ġ= Ġitems [ position ] ĊĠĠĠĠĠĠĠ Ġwhen Ġ( list Item . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList ItemType . V ACC INE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv accine Item Item : ĠV accine Item Ġ= Ġlist Item Ġas ĠV accine Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder : ĠV accine ViewHolder Ġ= ĠviewHolder Ġas ĠV accine ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( v accine Item Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList ItemType . HEADER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Item : ĠHeader Item Ġ= Ġlist Item Ġas ĠHeader Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder : ĠHeader ViewHolder Ġ= ĠviewHolder Ġas ĠHeader ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( header Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList ItemType . AP POINT MENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġappointment Item : ĠAppointment Item Ġ= Ġlist Item Ġas ĠAppointment Item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder : ĠAppointment ViewHolder Ġ= ĠviewHolder Ġas ĠAppointment ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( appointment Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNot Ġsure Ġif Ġfollowing Ġwould Ġbe Ġbetter ĊĠĠĠĠĠĠĠ Ġ// Ġ Ġreturn Ġwhen ( list Items [ position ]. type ){ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ ĠList ItemType . HEADER TYPE Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ ĠList ItemType . V ACC INET YPE Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠ Ġ// Ġ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġshould Ġhowever Ġgive Ġthe Ġsame Ġresults ĊĠĠĠĠĠĠĠ Ġreturn Ġitems [ position ]. type . ordinal ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems . count () ĊĠĠĠ Ġ} Ċ } Ċ