package Ġcom . example . stores ample Ċ Ċ import Ġandroid . net . Uri Ċ 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 Ġco il . load Ċ import Ġcom . example . stores ample . databinding . Gallery Layout Binding Ċ Ċ val Ġdiff Callback Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Uri >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠUri , Ġnew Item : ĠUri ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġold Item . path Ġ== Ġnew Item . path ĊĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠUri , Ġnew Item : ĠUri ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġold Item Ġ== Ġnew Item Ċ } Ċ Ċ class ĠGallery Adapter ( val ĠonClick : Ġ( uri : ĠUri ) Ġ-> ĠUnit ) Ġ: ĊĠĠĠ ĠList Adapter < Uri , ĠImage ViewHolder >( diff Callback ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠImage ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGallery Layout Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠImage ViewHolder ( binding , ĠonClick ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠImage ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġholder . binding . root . tag Ġ= Ġuri ĊĠĠĠĠĠĠĠ Ġholder . binding . iv . load ( uri ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠImage ViewHolder ( val Ġbinding : ĠGallery Layout Binding , Ġval ĠonClick : Ġ( uri : ĠUri ) Ġ-> ĠUnit ) Ġ: ĊĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . iv . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġbinding . root . tag Ġas ? ĠUri Ġ?: Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ( uri ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }