package Ġcom . lx . tod ays bing . adapters Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . paging . Paging Data Adapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . lx . tod ays bing . data . op al api . Image Ċ import Ġcom . lx . tod ays bing . databinding . ListItem Gallery Binding Ċ import Ġcom . lx . tod ays bing . fragment . Gallery Fragment Directions Ċ Ċ class ĠGallery Adapter Ġ: ĊĠĠĠ ĠP aging Data Adapter < Image , ĠGallery Adapter . Gallery ViewHolder >( Gallery Diff Callback ()) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠGallery ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġphoto Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġholder . bind ( position , Ġphoto ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠGallery ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGallery ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠListItem Gallery Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠGallery ViewHolder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠListItem Gallery Binding ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . set ClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . image ?. let Ġ{ Ġphoto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Image ( photo , Ġview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġnavigate To Image ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage : ĠImage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠView ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirections Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGallery Fragment Directions . action Gallery Fragment To Gallery Detail Fragment ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . find Nav Controller (). navigate ( directions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( position : ĠInt , Ġimage : ĠImage ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . position Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . image Ġ= Ġimage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Bindings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠGallery Diff Callback Ġ: ĠDiff Util . Item Callback < Image >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠImage , Ġnew Item : ĠImage ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . info Url Ġ== Ġnew Item . info Url ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠImage , Ġnew Item : ĠImage ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠ Ġ} Ċ Ċ }