package Ġcom . s ung bin . recyclerview adapter maker . library Ċ Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . NonNull Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . s ung bin . recyclerview adapter maker . library . options . Divider Ċ import Ġcom . s ung bin . recyclerview adapter maker . library . options . Option Ċ import Ġcom . s ung bin . recyclerview adapter maker . library . options . Padding Ċ import Ġcom . s ung bin . recyclerview adapter maker . library . swipe . Swipe Controller Ċ import Ġkotlin . properties . Deleg ates ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠS ung Bin Ġon Ġ 2 0 2 0 - 0 5 - 2 8 . Ċ Ġ*/ Ċ Ċ object ĠAdapter Helper Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġitem : ĠArrayList < *> ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlistener : ĠOn View Bind Listener ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView : ĠRecyclerView ĊĠĠĠ Ġprivate Ġvar Ġoption : ĠOption ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġswipe Controller : ĠSw ipe Controller ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlayout Res Ġby ĠDeleg ates . notNull < Int >() ĊĊĠĠĠ Ġinterface ĠOn View Bind Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon View Bind Listener ( item : ĠArrayList <* >, Ġview : ĠView , Ġposition : ĠInt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd View Bind Listener ( listener : ĠOn View Bind Listener ): ĠAdapter Helper Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd View Bind Listener ( listener : Ġ( item : ĠArrayList <* >, Ġview : ĠView , Ġposition : ĠInt ) Ġ-> ĠUnit ): ĠAdapter Helper Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġobject Ġ: ĠOn View Bind Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Bind Listener ( item : ĠArrayList <* >, Ġview : ĠView , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( item , Ġview , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith ( re cyclerView : ĠRecyclerView ): ĠAdapter Helper Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . re cyclerView Ġ= Ġre cyclerView ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbind Layout ( layout Res : ĠInt ): ĠAdapter Helper Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . layout Res Ġ= Ġlayout Res ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Swipe Listener ( swipe Controller : ĠSw ipe Controller ): ĠAdapter Helper Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . swipe Controller Ġ= Ġswipe Controller ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Option ( option : ĠOption ): ĠAdapter Helper Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . option Ġ= Ġoption ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate ( item : ĠArrayList < *> ){ ĊĠĠĠĠĠĠĠ Ġthis . item Ġ= Ġitem ĊĠĠĠĠĠĠĠ Ġset Adapter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Adapter (){ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠAdapter () ĊĠĠĠĠĠĠĠ Ġif ( swipe Controller Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Touch Helper Ġ= ĠItem Touch Helper ( swipe Controller !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Touch Helper . attach To RecyclerView ( re cyclerView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . addItem Decoration ( object Ġ: ĠRecyclerView . Item Decoration () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Draw ( c : ĠCanvas , Ġparent : ĠRecyclerView , Ġstate : ĠRecyclerView . State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Controller !!. on Draw ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( option Ġ!= Ġnull ) Ġre cyclerView . setItem Option ( option !!. div ier , Ġoption !!. padding ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRecyclerView . setItem Option ( div ier : ĠDiv ider ?, Ġpadding : ĠPadding ? Ġ= Ġnull ){ ĊĠĠĠĠĠĠĠ Ġif ( div ier Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . addItem Decoration ( Divider Item Decoration ( this . context , Ġdiv ier . orientation )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( padding Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . addItem Decoration ( object Ġ: ĠRecyclerView . Item Decoration () Ġ{ Ġ// ìķĦ ìĿ´ íħľ Ġê°Ħ ê²© ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect : ĠRect , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate : ĠRecyclerView . State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent . getChild Adapter Position ( view ) Ġ!= Ġparent . adapter !!. item Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . set ( padding . left , Ġpadding . top , Ġpadding . right , Ġpadding . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠAdapter Ġ: ĠRecyclerView . Adapter < Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠViewHolder ( view holder : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġview holder ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( view Group : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( view Group . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Res , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder (@ NonNull Ġview holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on View Bind Listener ( item , Ġview holder . view , Ġposition ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitem . size ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ= Ġposition . to Long () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġfun ĠgetItem ( position : ĠInt ): ĠAny Ġ= Ġitem [ position ] ĊĠĠĠĠĠĠĠ Ġfun ĠgetAll Item (): ĠArrayList < *> Ġ= Ġitem ĊĠĠĠ Ġ} Ċ Ċ }