package Ġir . ro o hi . far sh id . reminder pro . views . adapter ĊĊ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . Arrays Ċ Ċ import Ġandroidx . databinding . Data Binding Util Ċ Ċ /** Ċ Ġ* ĠAndroid ĠAndroid - Application ĠProject Ġat ĠZ ar in Pal Ċ Ġ* ĠCreated Ġby Ġh os se in A mini Ġon Ġ 1 1 / 3 / 1 7 . Ċ Ġ* ĠCopyright ĠH os se in ĠA mini ĠAll ĠRights ĠReserved . Ċ Ġ*/ Ċ Ċ public Ġabstract Ġclass ĠBase Recycler Adapter < DataSet Type > Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġitems : ĠMutable List < DataSet Type >? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcontext : ĠContext ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġprivate Ġconstructor ( items : ĠArrayList < DataSet Type >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġitems ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor () ĊĊĠĠĠ Ġpublic Ġabstract Ġfun ĠgetItem Layout ( view Type : ĠInt ): ĠInt ĊĊĠĠĠ Ġpublic Ġabstract Ġfun Ġon BindView ( ĊĠĠĠĠĠĠĠ Ġview Data Binding : ĠView Data Binding , ĠviewHolder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt , ĊĠĠĠĠĠĠĠ Ġview Type : ĠInt , Ġelement : ĠDataSet Type ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ== Ġnull ) Ġthis . context Ġ= Ġparent . context ĊĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠData Binding Util . inflate < ViewData Binding >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetItem Layout ( view Type ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠV H ( v ) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠV H Ġconstructor ( var Ġbinding : ĠView Data Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon BindView ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( holder Ġas ĠBase Recycler Adapter <* >. VH ). binding , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . getItem ViewType (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems ! ![ position ] ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( items Ġ== Ġnull ) Ġ 0 Ġelse Ġitems !!. size ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġswap Data ( items : ĠMutable List < DataSet Type >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġitems ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Items (): ĠList < DataSet Type >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . items ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Item ( var arg Ġitems : ĠDataSet Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . items Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . items !!. addAll ( ArrayList ( Arrays . asList (* items ))) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Item ( item : ĠDataSet Type , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġposition Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġif Ġ( items Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( items !!. size Ġ< Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġitems !!. size ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( position Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġitems !!. add ( position , Ġitem ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Item ( var arg Ġitems : ĠDataSet Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . items Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . items !!. removeAll ( ArrayList ( Arrays . asList (* items ))) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Item ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( items Ġ== Ġnull Ġ|| Ġposition Ġ< Ġ 0 Ġ|| Ġitems !!. size Ġ< Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġitems !!. remove At ( position ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove All () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . items Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġitems !!. clear () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠgetContext Compat Color ( color : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠContext Compat . getColor ( context !! , Ġcolor ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ