package Ġcom . example . gd g finder . search Ċ Ċ 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 . example . gd g finder . databinding . ListItem Binding Ċ import Ġcom . example . gd g finder . network . G dg Chapter ĊĊ Ċ class ĠG dg ListAdapter ( val Ġclick Listener : ĠG dg ClickListener ): ĠList Adapter < G dg Chapter , ĠG dg ListAdapter . G dg ListView Holder >( Diff Callback ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject ĠDiff Callback : ĠDiff Util . Item Callback < G dg Chapter > (){ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠG dg Chapter , Ġnew Item : ĠG dg Chapter ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ=== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠG dg Chapter , Ġnew Item : ĠG dg Chapter ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠG dg ListView Holder ( private Ġvar Ġbinding : ĠListItem Binding ): ĠRecyclerView . ViewHolder ( binding . root ){ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( listener : ĠG dg ClickListener , Ġg dg Chapter : ĠG dg Chapter ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . chapter Ġ= Ġg dg Chapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . click Listener Ġ= Ġlistener ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfrom ( parent : ĠViewGroup ): ĠG dg ListView Holder { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠListItem Binding . inflate ( layout Inflater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠG dg ListView Holder ( binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠG dg ListView Holder { ĊĠĠĠĠĠĠĠ Ġreturn ĠG dg ListView Holder . from ( parent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠG dg ListView Holder , Ġposition : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġholder . bind ( click Listener , ĠgetItem ( position )) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠG dg ClickListener ( val Ġclick Listener : Ġ( chapter : ĠG dg Chapter ) Ġ-> ĠUnit ){ ĊĠĠĠ Ġfun ĠonClick ( chapter : ĠG dg Chapter ) Ġ= Ġclick Listener ( chapter ) Ċ }