package Ġcom . k ro e ger ama . ka ite ki . recyclerview Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . paging . Paging Data Adapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . view binding . View Binding Ċ Ċ abstract Ġclass ĠView Binding Paging Data Adapter < T Ġ: ĠAny , ĠVB Ġ: ĠView Binding >( ĊĠĠĠ Ġ@ Suppress (" Member Visibility Can Be Private ") ĊĠĠĠ Ġprotected Ġval Ġbinding Inflater : Ġ( LayoutInflater , ĠViewGroup ?, ĠBoolean ) Ġ-> ĠVB , ĊĠĠĠ Ġdiff Callback : ĠDiff Util . Item Callback < T >, ĊĠĠĠ Ġ@ Suppress (" Member Visibility Can Be Private ") ĊĠĠĠ Ġprotected Ġval Ġroot ClickListener : Ġ(( item : ĠT ?) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ: ĠP aging Data Adapter < T , ĠView Binding Base ViewHolder < VB >>( diff Callback ) Ġ{ ĊĊĠĠĠ Ġabstract Ġfun ĠVB . update ( ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠView Binding Base ViewHolder < VB >, ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġview Type : ĠInt , ĊĠĠĠĠĠĠĠ Ġitem : ĠT ? ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġopen Ġfun ĠVB . inject Listeners ( ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠView Binding Base ViewHolder < VB >, ĊĠĠĠĠĠĠĠ Ġview Type : ĠInt , ĊĠĠĠĠĠĠĠ Ġcurrent Item : Ġ() Ġ-> ĠT ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġroot ClickListener ?. let Ġ{ Ġroot . setOnClickListener Ġ{ Ġit ( currentItem ()) Ġ} Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun ĠVB . prepare () Ġ= ĠUnit ĊĊĠĠĠ Ġprotected Ġfun ĠgetItem At Position ( position : ĠInt ) Ġ= ĠgetItem ( position ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ) Ġ= ĠView Binding Base ViewHolder . create ( parent , Ġbinding Inflater ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . prepare () ĊĠĠĠĠĠĠĠ Ġbinding . inject Listeners ( this , Ġview Type ) Ġ{ ĠgetItem ( binding Adapter Position ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠView Binding Base ViewHolder < VB >, Ġposition : ĠInt ) Ġ= Ġwith ( holder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . update ( this , ĠitemView . context , ĠitemView Type , ĠgetItem ( position )) ĊĠĠĠ Ġ} Ċ Ċ } Ċ