package Ġcom . it gon ca . rent it . ui . feature . home . 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 . it gon ca . rent it . data . remote . model . Location Ċ import Ġcom . it gon ca . rent it . databinding . Item Location Layout Binding Ċ import Ġcom . it gon ca . rent it . utils . extension . load ImageUrl Ċ Ċ class ĠLoc ations Adapter Ġ: ĊĠĠĠ ĠList Adapter < Location , ĠLoc ations Adapter . Locations ViewHolder >( Diff Util Location Callback ()) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠLoc ations ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Location Layout Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠLoc ations ViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠLoc ations ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġholder . bind ( location ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Re cyc led ( holder : ĠLoc ations ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Re cyc led ( holder ) ĊĠĠĠĠĠĠĠ Ġholder . unbind () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠLoc ations ViewHolder ( private Ġval Ġbinding : ĠItem Location Layout Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item Location : ĠLocation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( item Location ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv Image Location . load ImageUrl ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Name Location . text Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Price . text Ġ= Ġ"$ $ price " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Favorite . isChecked Ġ= Ġcheckbox Current State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Favorite . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox Current State Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġun bind () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Favorite . setOn Checked ChangeListener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Favorite . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠDiff Util Location Callback Ġ: ĠDiff Util . Item Callback < Location >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠLocation , Ġnew Item : ĠLocation ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġold Item . id Ġ== Ġnew Item . id ĊĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠLocation , Ġnew Item : ĠLocation ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġold Item Ġ== Ġnew Item Ċ }