package Ġtran . nam . common Ċ Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ abstract Ġclass ĠData Bound Adapter < T , ĠV Ġ: ĠView Data Binding > Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Data Bound ViewHolder < V >>() Ġ{ ĊĊĠĠĠ Ġvar Ġdata : ĠMutable List < T > Ġ= ĠArrayList () ĊĊĠĠĠ Ġopen Ġfun Ġupdate Data ( data : ĠMutable List < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . data . clear () ĊĠĠĠĠĠĠĠ Ġthis . data . addAll ( data ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetItem ( position : ĠInt ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata [ position ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠData Bound ViewHolder < V > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= ĠData Bound ViewHolder ( create Binding ( parent , Ġview Type )) ĊĠĠĠĠĠĠĠ Ġhandle Create Holder ( holder ) ĊĠĠĠĠĠĠĠ Ġreturn Ġholder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠData Bound ViewHolder < V >, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbind ( holder . binding , Ġdata [ position ]) ĊĠĠĠĠĠĠĠ Ġbind ( holder . binding , Ġposition ) ĊĠĠĠĠĠĠĠ Ġhandle Binding Holder ( holder ) ĊĠĠĠĠĠĠĠ Ġholder . binding . execute Pending Bindings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Position ( item : ĠT ) Ġ= Ġdata . indexOf ( item ) ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġbind ( binding : ĠV , Ġitem : ĠT ) ĊĠĠĠ Ġopen Ġfun Ġbind ( binding : ĠV , Ġposition Ġ: ĠInt ){} ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġcreate Binding ( parent : ĠViewGroup , Ġtype : ĠInt ): ĠV ĊĠĠĠ Ġopen Ġfun Ġhandle Create Holder ( holder : ĠData Bound ViewHolder < V >) Ġ{} ĊĠĠĠ Ġopen Ġfun Ġhandle Binding Holder ( holder : ĠData Bound ViewHolder < V >) Ġ{} Ċ }