package Ġcom . example . common Ċ Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ abstract Ġclass ĠBase Recycler Adapter < T , ĠB Ġ: ĠView Data Binding , ĠV H Ġ: ĠBase ViewHolder < B , ĠT >>( protected Ġval Ġdata List : ĠList < T >) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < VH >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġdata List . size ĊĊĠĠĠ Ġfun Ġadd ( index : ĠInt Ġ= Ġ- 1 , Ġitem : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data List Ġis ĠMutable List < T >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ> Ġ- 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( index , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Inserted ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Inserted ( data List . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove ( index : ĠInt Ġ= Ġ- 1 , Ġitem : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data List Ġis ĠMutable List < T >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . remove ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtake If Ġ{ Ġindex Ġ> Ġ- 1 Ġ}. apply Ġ{ Ġnotify Item Removed ( index ) Ġ} Ġ?: Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }