package Ġcom . y ous fi . hay ati ine App . ui . base Ċ Ċ import Ġandroidx . databinding . Observable List Ċ import Ġandroidx . recyclerview . widget . RecyclerView ĊĊ Ċ /** Ċ Ġ* ĠObservable RecyclerView Adapter Ġis Ġused Ġto Ġallow Ġchanges Ġto ĠObservable List Ġto Ġupdate Ġthe ĠRecyclerView Ċ Ġ*/ Ċ abstract Ġclass ĠObservable RecyclerView Adapter < T , ĠH older Ġ: ĠRecyclerView . ViewHolder >( ĊĠĠĠ Ġprivate Ġval Ġitems : ĠObservable List < T > Ċ ) Ġ: ĠRecyclerView . Adapter < Holder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġon ItemClickListener : ĠOn ItemClickListener ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// notify DataSet Changed Ġis Ġused Ġfor Ġsimplicity Ġhere . ĠOpt imize Ġby Ġcalling Ġspecific Ġmethod ĊĠĠĠĠĠĠĠ Ġitems . add On List Changed Callback ( object Ġ: ĠObservable List . On List Changed Callback < Observable List < T >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChanged ( sender : ĠObservable List < T > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Range Removed ( sender : ĠObservable List < T > ?, Ġposition Start : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Range Moved ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠObservable List < T > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Position : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Position : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Count : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Range Inserted ( sender : ĠObservable List < T > ?, Ġposition Start : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Range Changed ( sender : ĠObservable List < T > ?, Ġposition Start : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitems . size ĊĊĠĠĠ Ġfun ĠgetItem ( i : ĠInt ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems [ i ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Items (): ĠObservable List < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget On ItemClickListener (): ĠOn ItemClickListener ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġon ItemClickListener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On ItemClickListener ( on ItemClickListener : ĠOn ItemClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on ItemClickListener Ġ= Ġon ItemClickListener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Clicked ( item : ĠAny ) ĊĠĠĠ Ġ} Ċ }