package Ġcom . app . kotlin mv ps ample . presentation . base Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlinx . android . extensions . Layout Container Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠG eras imos Ġon Ġ 2 7 / 1 1 / 2 0 2 1 Ċ Ġ* Ċ Ġ* ĠBase Adapter Ġimplementation Ġinspired Ġfrom Ġa Ġc ow ork er Ċ Ġ*/ Ċ abstract Ġclass ĠBase Adapter < T > Ġ: ĠRecyclerView . Adapter < Base Adapter < T >. Base ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprotected Ġvar Ġdata : ĠMutable List < T ?> Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġabstract Ġfun Ġcreate Item ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBase ViewHolder ĊĊĠĠĠ Ġabstract Ġinner Ġclass ĠBase ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ), ĊĠĠĠĠĠĠĠ ĠLayout Container Ġ{ ĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġon Bind Data ( item : ĠT ?) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBase ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . on Bind Data ( if Ġ( position Ġ< Ġdata . size ) Ġdata [ position ] Ġelse Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBase ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Item ViewHolder ( parent , Ġview Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġinf late (@ Layout Res Ġid : ĠInt , Ġcontainer : ĠViewGroup ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontainer . context ĊĠĠĠĠĠĠĠ Ġreturn ĠLayoutInflater . from ( context ). inflate ( id , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset ( data : ĠMutable List < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . data . clear () ĊĠĠĠĠĠĠĠ Ġthis . data . addAll ( data ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . clear () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ }