package Ġorg . simple . clin ic . widgets Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . paging . Paged ListAdapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġio . reactivex . subjects . Subject Ċ import Ġorg . simple . clin ic . widgets . recyclerview . Binding ViewHolder Ċ Ċ open Ġclass ĠP aging Item Adapter _ old < I Ġ: ĠP aging Item Adapter _ old . Item < E >, ĠE >( ĊĠĠĠ Ġdiff Callback : ĠDiff Util . Item Callback < I >, ĊĠĠĠ Ġprivate Ġval Ġbindings : ĠBind ings Callback Ċ ) Ġ: ĠP aged ListAdapter < I , ĠBinding ViewHolder >( diff Callback ) Ġ{ ĊĊĠ Ġprivate Ġval Ġevent Subject Ġ= ĠPublish Subject . create < E >() ĊĠ Ġval Ġitem Events : ĠObservable < E > Ġ= Ġevent Subject . hide () ĊĊĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBinding ViewHolder Ġ{ ĊĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĊĠĠĠ Ġval Ġbinding Ġ= Ġbindings . getValue ( view Type ) ĊĊĠĠĠ Ġreturn ĠBinding ViewHolder ( binding Ġ= Ġbinding . invoke ( layout Inflater , Ġparent )) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBinding ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠ ĠgetItem ( position )?. render ( holder , Ġevent Subject ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġitem Ġ= ĠgetItem ( position ) ĊĠĠĠ Ġreturn Ġitem ?. layout Res Id () ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNullPointerException (" Failed Ġto Ġget Ġitem Ġat Ġposition : Ġ$ position ") ĊĠ Ġ} ĊĊĠ Ġinterface ĠItem < E > Ġ{ ĊĊĠĠĠ Ġ@ Layout Res ĊĠĠĠ Ġfun Ġlayout Res Id (): ĠInt ĊĊĠĠĠ Ġfun Ġrender ( holder : ĠBinding ViewHolder , Ġsubject : ĠSubject < E >) ĊĠ Ġ} Ċ } Ċ