package Ġcom . sem icolon . walk hub . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ class ĠRecyclerView Adapter Ġ: ĠRecyclerView . Adapter < Binding ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġitems Ġ= Ġmutable ListOf < RecyclerView Item >() ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġlayout Id : ĠInt ): ĠBinding ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠView Data Binding Ġ= ĠData Binding Util . inflate ( in flater , Ġlayout Id , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠBinding ViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBinding ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems [ position ]. bind ( holder . binding ) ĊĠĠĠĠĠĠĠ Ġholder . binding . execute Pending Bindings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems [ position ]. item Layout Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Data ( new Items : ĠList < RecyclerView Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items . clear () ĊĠĠĠĠĠĠĠ Ġthis . items . addAll ( new Items ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Data ( new Item : ĠRecyclerView Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items . add ( new Item ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ }