package Ġcom . domain . cats . app . presentation . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . domain . cats . app . databinding . ListItem Fact s Binding Ċ import Ġcom . domain . cats . app . domain . models . Cat Ċ import Ġcom . domain . cats . app . presentation . models . to Ui Model Ċ Ċ class ĠF acts Adapter Ġ: ĠRecyclerView . Adapter < Fact s Adapter . Fact ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġitems Ġ= Ġmutable ListOf < Cat >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠFact ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠListItem Fact s Binding . inflate ( layout Inflater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠFact ViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitems . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠFact ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( items [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetData ( items : ĠList < Cat >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdiff Callback Ġ= ĠF acts Diff Callback ( this . items , Ġitems ) ĊĠĠĠĠĠĠĠ Ġval Ġdiff Result Ġ= ĠDiff Util . calculate Diff ( diff Callback ) ĊĊĠĠĠĠĠĠĠ Ġthis . items . clear () ĊĠĠĠĠĠĠĠ Ġthis . items . addAll ( items ) ĊĊĠĠĠĠĠĠĠ Ġdiff Result . dispatch Updates To ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠFact ViewHolder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠListItem Fact s Binding ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( cat : ĠCat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . ui Model Ġ= Ġcat . to Ui Model () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }