package Ġcom . chr yn an . aaaa h Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ @ Suppress (" unused ") Ċ open Ġclass ĠManager RecyclerView Adapter < T Ġ: ĠAny >( ĊĠĠĠ Ġprotected Ġval Ġadapters : ĠSet < Another Adapter <* >> Ġ= Ġempty Set () Ċ ) Ġ: ĠRecyclerView . Adapter < Manager RecyclerView Adapter . ViewHolder >(), ĊĠĠĠ ĠItem List Updater < T > Ġ{ ĊĊĠĠĠ Ġoverride Ġvar Ġitems : ĠList < T > Ġ= Ġempty List () ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġitems . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġitems [ position ]. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠUnique Adapter Item ) Ġit . unique Adapter Id Ġelse Ġsuper . getItem Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġget Adapter For Item ( items [ position ]) ?. view Type Ġ?: Ġsuper . getItem ViewType ( position ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= Ġget Adapter For ViewType ( view Type ) !!. onCreate View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġitems [ position ] ĊĊĠĠĠĠĠĠĠ Ġget Adapter For Item ( item )?. bind Item ( holder . item View , Ġitem , Ġposition ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonChanged ( position : ĠInt , Ġcount : ĠInt , Ġpayload : ĠAny ?) Ġ= ĊĠĠĠĠĠĠĠ Ġnotify Item Range Changed ( position , Ġcount , Ġpayload ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Moved ( from Position : ĠInt , Ġto Position : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġnotify Item Moved ( from Position , Ġto Position ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Inserted ( position : ĠInt , Ġcount : ĠInt ) Ġ= Ġnotify Item Range Inserted ( position , Ġcount ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Removed ( position : ĠInt , Ġcount : ĠInt ) Ġ= Ġnotify Item Range Removed ( position , Ġcount ) ĊĊĠĠĠ Ġprivate Ġfun Ġget Adapter For Item ( item : ĠT ) Ġ= Ġadapters . first OrNull Ġ{ Ġit . on Handles Item ( item ) Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Adapter For ViewType ( view Type : ĠView Type ) Ġ= ĊĠĠĠĠĠĠĠ Ġadapters . first OrNull Ġ{ Ġit . view Type Ġ== Ġview Type Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ċ } Ċ