package Ġcom . f 2 h . f 2 h _ admin . screens . group . freeze _ multiple Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . f 2 h . f 2 h _ admin . databinding . List Freeze Multiple Binding ĊĊ Ċ class ĠFree ze Multiple Items Adapter ( val ĠcheckBox ClickListener : ĠCheckBox ClickListener ): ĊĠĠĠ ĠList Adapter < Freeze Multiple Items Model , ĠFree ze Multiple Items Adapter . ViewHolder >( ListItem Diff Callback ()) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( getItem ( position ) !! , ĠcheckBox ClickListener ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder . from ( parent ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠViewHolder Ġprivate Ġconstructor ( val Ġbinding : ĠList Freeze Multiple Binding ): ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem : ĠFree ze Multiple Items Model , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox ClickListener : ĠCheckBox ClickListener ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . ui Model Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . checkBox ClickListener Ġ= ĠcheckBox ClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfrom ( parent : ĠViewGroup ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠList Freeze Multiple Binding . inflate ( view , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ class ĠListItem Diff Callback Ġ: ĠDiff Util . Item Callback < Freeze Multiple Items Model >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠFree ze Multiple Items Model , Ġnew Item : ĠFree ze Multiple Items Model ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . availability Id Ġ== Ġnew Item . availability Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠFree ze Multiple Items Model , Ġnew Item : ĠFree ze Multiple Items Model ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ class ĠCheckBox ClickListener ( val Ġclick Listener : Ġ( ui Model : ĠFree ze Multiple Items Model ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġfun ĠonClick ( ui Model : ĠFree ze Multiple Items Model ) Ġ= Ġclick Listener ( ui Model ) Ċ } Ċ