package Ġcom . y ue ban . y op ic . ui . main . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġcom . y ue ban . y op ic . data . model . Photo Ċ import Ġcom . y ue ban . y op ic . databinding . Item Photo Binding Ċ import Ġcom . y ue ban . y op ic . util . Base Binding ListAdapter Ċ import Ġcom . y ue ban . y op ic . util . screen Width Ċ Ċ /** Ċ Ġ* Ġ@ author Ġy ue ban Ċ Ġ* Ġ@ date Ġ 2 0 1 9 / 1 / 1 5 Ċ Ġ* Ġ@ email Ġfb zh h 0 0 7 @ gmail . com Ċ Ġ*/ Ċ class ĠPhoto ListAdapter ( ĊĠĠĠ Ġprivate Ġval Ġspan Count : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġitem Spacing : ĠInt , ĊĠĠĠ Ġvar Ġitem ClickListener : Ġ(( img View : ĠImageView , Ġphoto : ĠPhoto ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ: ĠBase Binding ListAdapter < Photo , ĠItem Photo Binding >( ĊĠĠĠ Ġdiff Callback Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Photo >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠPhoto , Ġnew Item : ĠPhoto ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠPhoto , Ġnew Item : ĠPhoto ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . copy ( row Id Ġ= Ġ 0 ) Ġ== Ġnew Item . copy ( row Id Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate Binding ( parent : ĠViewGroup ): ĠItem Photo Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠItem Photo Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . photo ?. let Ġ{ Ġphoto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ClickListener ?. invoke ( binding . photo Image , Ġphoto ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( binding : ĠItem Photo Binding , Ġitem : ĠPhoto , Ġpayload s : ĠMutable List < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġbinding . photo Image . layout Params ĊĠĠĠĠĠĠĠ Ġval Ġitem Width Ġ= Ġ( screen Width Ġ- Ġ( span Count Ġ+ Ġ 1 ) Ġ* Ġitem Spacing ) Ġ/ Ġspan Count ĊĠĠĠĠĠĠĠ Ġparams . height Ġ= Ġitem Width Ġ* Ġitem . height Ġ/ Ġitem . width ĊĠĠĠĠĠĠĠ Ġbinding . photo Image . layout Params Ġ= Ġparams ĊĊĠĠĠĠĠĠĠ Ġbinding . photo Ġ= Ġitem ĊĠĠĠ Ġ} Ċ }