package Ġcom . hy un h . cert y čĊč Ċ import Ġandroid . view . LayoutInflater č Ċ import Ġandroid . view . ViewGroup č Ċ import Ġandroidx . databinding . Data Binding Util č Ċ import Ġandroidx . navigation . find Nav Controller č Ċ import Ġandroidx . recyclerview . widget . RecyclerView č Ċ import Ġcom . hy un h . cert y . databinding . Layout Rel Binding č Ċ import Ġcom . hy un h . cert y . databinding . Layout Spec Binding čĊč Ċ class ĠSpec Adapter Ġ: ĠRecyclerView . Adapter < Spec Adapter . ViewHolder >() Ġ{ čĊčĊĠĠĠ Ġprivate Ġval Ġitems Ġ= Ġmutable ListOf < Spec >() čĊčĊĠĠĠ Ġfun Ġupdate Item ( new Items : ĠList < Spec >) Ġ{ čĊĠĠĠĠĠĠĠ Ġitems . clear () čĊĠĠĠĠĠĠĠ Ġitems . addAll ( new Items ) čĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġitems . size čĊčĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġholder . bind ( items [ position ]) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( Data Binding Util . inflate ( LayoutInflater . from ( parent . context ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . layout _ spec , Ġparent , Ġfalse ) čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġclass ĠViewHolder ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠLayout Spec Binding čĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġinit Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . is RecyclerView Visible Ġ= Ġ! binding . is RecyclerView Visible čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġfun Ġbind ( spec : ĠSpec ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . spec Ġ= Ġspec čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recyclerview . apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠRel Adapter ( spec ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġclass ĠRel Adapter ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġspec : ĠSpec čĊĠĠĠ Ġ) Ġ: ĠRecyclerView . Adapter < Rel Adapter . ViewHolder >() Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġspec . rel . size čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( spec . name , Ġspec . rel [ position ]) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( Data Binding Util . inflate ( LayoutInflater . from ( parent . context ), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . layout _ rel , Ġparent , Ġfalse )) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġclass ĠViewHolder ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠLayout Rel Binding čĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġbind ( title : ĠString , Ġrel : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . rel Ġ= Ġrel čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠSpec Fragment Directions . action To Rsp ( title , Ġrel ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . find Nav Controller (). navigate ( action ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ }