package Ġcom . ak in ci . dog go app . feature . detail . adapter Ċ Ċ 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 . ak in ci . dog go app . databinding . Row Sh im mer Binding Ċ Ċ class ĠSh im mer Adapter ( ĊĠĠĠ Ġprivate Ġval Ġrandom ItemCount : ĠInt Ġ= Ġ( 3 .. 6 ). random () Ċ ): ĠList Adapter < String , ĠSh im mer Adapter . Sh im mer ViewHolder >( Sh im mer Diff CallBack ()) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠSh im mer ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġreturn ĠSh im mer ViewHolder ( Row Sh im mer Binding . inflate ( in flater , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ Ġreturn Ġrandom ItemCount Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠSh im mer ViewHolder , Ġposition : ĠInt ) Ġ{ Ġholder . bind () Ġ} ĊĊĠĠĠ Ġclass ĠSh im mer ViewHolder ( val Ġbinding : ĠRow Sh im mer Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind () Ġ{ Ġbinding . shim mer View Container . start Sh im mer () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠSh im mer Diff CallBack Ġ: ĠDiff Util . Item Callback < String >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠString , Ġnew Item : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠString , Ġnew Item : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠ Ġ} Ċ }