package Ġcom . popular movies . vp aliy . popular movies app . ui . base Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġcom . vp aliy . kotlin _ extensions . in flater Ċ import Ġcom . vp aliy . kotlin _ extensions . then Ċ Ċ abstract Ġclass ĠBase Adapter < T >( context : ĠContext ) ĊĠ Ġ: ĠRecyclerView . Adapter < Base Adapter < T >. Base ViewHolder >() Ġ{ ĊĊĠ Ġvar Ġdata Ġ= Ġmutable ListOf < T >() ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠ Ġval ĠisEmpty ĊĠĠĠ Ġget () Ġ= Ġdata . isEmpty () ĊĊĠ Ġprotected Ġval Ġinflater : ĠLayoutInflater Ġ= Ġcontext . in flater () ĊĊĠ Ġabstract Ġinner Ġclass ĠBase ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġbind () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġdata . size ĊĊĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBase ViewHolder , Ġposition : ĠInt ) ĊĠĠĠĠĠ Ġ= Ġholder . bind () ĊĊĠ Ġopen Ġfun Ġadd ( item : ĠT ) Ġ= Ġapply Ġ{ Ġadd Item ( item ) Ġ} ĊĊĠ Ġprivate Ġfun Ġadd Item ( item : ĠT ) Ġ{ ĊĠĠĠ Ġdata . add ( item ) ĊĠĠĠ Ġnotify DataSet Changed () ĊĠ Ġ} ĊĊĠ Ġfun Ġclear () Ġ{ ĊĠĠĠ Ġdata . clear () ĊĠĠĠ Ġnotify DataSet Changed () ĊĠ Ġ} ĊĊĠ Ġopen Ġfun Ġappend ( app ended : ĠList < T >) Ġ{ ĊĠĠĠ Ġdata . addAll ( app ended ) ĊĠĠĠ Ġnotify DataSet Changed () ĊĠ Ġ} ĊĊĠ Ġopen Ġfun Ġadd First ( item : ĠT ) Ġ{ ĊĠĠĠ Ġdata . add ( 0 , Ġitem ) ĊĠĠĠ Ġnotify Item Inserted ( 0 ) ĊĠ Ġ} ĊĊĠ Ġopen Ġfun Ġadd Last ( item : ĠT ) Ġ{ ĊĠĠĠ Ġdata . add ( data . isNotEmpty () Ġthen Ġ( data . size Ġ- Ġ 1 ) Ġ?: Ġ 0 , Ġitem ) ĊĠĠĠ Ġnotify Item Inserted ( data . size Ġ- Ġ 1 ) ĊĠ Ġ} ĊĊĠ Ġoperator Ġfun ĠBase Adapter < T >. get ( index : ĠInt ) Ġ= Ġdata [ index ] ĊĊĠ Ġoperator Ġfun ĠBase Adapter < T >. set ( index : ĠInt , Ġitem : ĠT ) Ġ{ ĊĠĠĠ Ġdata [ index ] Ġ= Ġitem ĊĠ Ġ} ĊĊĠ Ġinner Ġclass ĠEmpty ( item View : ĠView ) Ġ: ĠBase ViewHolder ( item View ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġbind () Ġ{} ĊĠ Ġ} Ċ } Ċ