package Ġcom . long jun hao . wan jet pack . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . paging . Paging Data Adapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . long jun hao . wan jet pack . adapter . Search Adapter . Article ViewHolder Ċ import Ġcom . long jun hao . wan jet pack . data . Api Article Ċ import Ġcom . long jun hao . wan jet pack . databinding . ListItem Search Binding Ċ Ċ /** Ċ Ġ* Ġ. Article Adapter Ċ Ġ* Ċ Ġ* Ġ@ author ĠAd mit or Ċ Ġ* Ġ@ date Ġ 2 0 2 1 / 0 6 / 2 1 Ċ Ġ*/ Ċ class ĠSearch Adapter ( ĊĠĠĠ Ġprivate Ġval Ġfavorite OnClick : Ġ( Api Article , ĠInt ) Ġ-> ĠUnit Ċ ) Ġ: ĠP aging Data Adapter < Api Article , ĠArticle ViewHolder >( Article Diff Callback ()) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠArticle ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠArticle ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠListItem Search Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠArticle ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarticle Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġif Ġ( article Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( article ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . favorite . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . article ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite OnClick ( it , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠArticle ViewHolder ( ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠListItem Search Binding ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠApi Article ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarticle Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Bindings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠArticle Diff Callback Ġ: ĠDiff Util . Item Callback < Api Article >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠApi Article , Ġnew Item : ĠApi Article ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠApi Article , Ġnew Item : ĠApi Article ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }