package Ġio . j 9 9 . app . template . ui . common . view ĊĊ Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Call Super Ċ import Ġandroidx . annotation . MainThread Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ /** Ċ Ġ* Ġ ĠRecyclerView Ġ ĠAbstract ĠAdapter Ċ Ġ*/ Ċ abstract Ġclass ĠAbstract Adapter < T , ĠV Ġ: ĠRecyclerView . ViewHolder >( ĊĠĠĠ Ġval Ġon Item ActionListener : ĠOn Item ActionListener ? Ġ= Ġnull Ċ ) Ġ: ĠRecyclerView . Adapter < V >() Ġ{ ĊĠĠĠ Ġval Ġitems : ĠMutable List < T > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġopen Ġfun Ġupdate ( items : ĠList < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items . clear () ĊĠĠĠĠĠĠĠ Ġthis . items . addAll ( items ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġrefresh ( items : ĠList < T >, Ġrefresh : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items . clear () ĊĠĠĠĠĠĠĠ Ġthis . items . addAll ( items ) ĊĠĠĠĠĠĠĠ Ġif Ġ( refresh ) Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġappend ( items : ĠList < T >, Ġrefresh : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items . addAll ( items ) ĊĠĠĠĠĠĠĠ Ġif Ġ( refresh ) Ġnotify Item Range Inserted ( this . items . size Ġ- Ġitems . size , Ġitems . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġreplace ( position : ĠInt , Ġitem : ĠT , Ġrefresh : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items . set ( position , Ġitem ) ĊĠĠĠĠĠĠĠ Ġif Ġ( refresh ) Ġnotify Item Changed ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġappend ( position : ĠInt , Ġitems : ĠList < T >, Ġrefresh : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items . addAll ( position , Ġitems ) ĊĠĠĠĠĠĠĠ Ġif Ġ( refresh ) Ġnotify Item Range Inserted ( position , Ġitems . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġremove ( position : ĠInt , Ġrefresh : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items . remove At ( position ) ĊĠĠĠĠĠĠĠ Ġif Ġ( refresh ) Ġnotify Item Removed ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġremove ( item : ĠT , Ġrefresh : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġitems . indexOf ( item ) ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items . remove At ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( refresh ) Ġnotify Item Removed ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠV , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( on Item ActionListener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Item ActionListener . on Item Click ( it , Ġholder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitems . size ĊĊĊĠĠĠ Ġinterface ĠOn Item ActionListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Click ( view : ĠView , ĠviewHolder : ĠRecyclerView . ViewHolder ) ĊĠĠĠ Ġ} Ċ }