package Ġby . g ode velopment . king calculator . presentation . players list Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Async List Differ Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġby . g ode velopment . king calculator . databinding . Item Players List Binding Ċ import Ġby . g ode velopment . king calculator . domain . players domain . models . Item Player Model Ċ Ċ class ĠP layers Adapter ( ĊĠĠĠ Ġprivate Ġval ĠonClick : Ġ( Long ) Ġ-> ĠUnit Ċ ) Ġ: ĠRecyclerView . Adapter < Players Adapter . Item ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdiff Callback Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Item Player Model >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠItem Player Model , Ġnew Item : ĠItem Player Model ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠItem Player Model , Ġnew Item : ĠItem Player Model ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdiffer Ġ= ĠAsync List Differ ( this , Ġdiff Callback ) ĊĠĠĠ Ġvar Ġitem List : ĠList < Item Player Model > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdiffer . current List ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiffer . submit List ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠItem ViewHolder ( private Ġval Ġbinding : ĠItem Players List Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item Player Model : ĠItem Player Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Name . text Ġ= Ġitem Player Model . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Email . text Ġ= Ġitem Player Model . email ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick . invoke ( item Player Model . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠItem ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠItem ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Players List Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠItem ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( item List [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitem List . size Ċ }