package Ġcom . f ue led . recyclerview bindings . widget . swipe Ċ Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . helper . Item Touch Helper Ċ Ċ import Ġcom . f ue led . recyclerview bindings . util . View Util Ċ Ċ /** Ċ Ġ* ĠReference Ġ@ link Ġ{ https :// www . learn 2 cr ack . com / 2 0 1 6 / 0 2 / custom - swipe - recyclerview . html } ĊĊ Ġ* Ġ@ author Ġche t ans ach dev a Ġon Ġ 2 6 / 0 7 / 1 7 Ċ Ġ*/ Ċ Ċ class ĠSw ipe Item Touch Helper Callback Ġprivate Ġconstructor ( drag Dirs : ĠInt , Ġswipe Dirs : ĠInt ) Ġ: ĠItem Touch Helper . Simple Callback ( drag Dirs , Ġswipe Dirs ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdrawable Left : ĠDrawable ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdrawable Right : ĠDrawable ĊĠĠĠ Ġprivate Ġval Ġpaint Left : ĠPaint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġval Ġpaint Right : ĠPaint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġon Item Swipe Left Listener : ĠOn Item Swipe Listener ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġon Item Swipe Right Listener : ĠOn Item Swipe Listener ĊĠĠĠ Ġprivate Ġvar Ġswipe Enabled : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġconstructor ( builder : ĠBuilder ) Ġ: Ġthis ( builder . drag Dirs , Ġbuilder . swipe Dirs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Paint Color ( paint Left , Ġbuilder . bgColor Swipe Left ) ĊĠĠĠĠĠĠĠ Ġset Paint Color ( paint Right , Ġbuilder . bgColor Swipe Right ) ĊĠĠĠĠĠĠĠ Ġdrawable Left Ġ= Ġbuilder . drawable Left ĊĠĠĠĠĠĠĠ Ġdrawable Right Ġ= Ġbuilder . drawable Right ĊĠĠĠĠĠĠĠ Ġswipe Enabled Ġ= Ġbuilder . swipe Enabled ĊĠĠĠĠĠĠĠ Ġon Item Swipe Left Listener Ġ= Ġbuilder . on Item Swipe Left Listener ĊĠĠĠĠĠĠĠ Ġon Item Swipe Right Listener Ġ= Ġbuilder . on Item Swipe Right Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Paint Color ( paint : ĠPaint , Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġcolor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Item View Swipe Enabled () Ġ= Ġswipe Enabled ĊĊĠĠĠ Ġoverride Ġfun Ġon Move ( re cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder , Ġtarget : ĠRecyclerView . ViewHolder ) Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( view Holder : ĠRecyclerView . ViewHolder , Ġdirection : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠviewHolder . adapter Position ĊĠĠĠĠĠĠĠ Ġif Ġ( direction Ġ== ĠItem Touch Helper . LEFT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Swipe Left Listener . on Item Sw ip ed ( position ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( direction Ġ== ĠItem Touch Helper . RIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Swipe Right Listener . on Item Sw ip ed ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Child Draw ( c : ĠCanvas , Ġre cyclerView : ĠRecyclerView , ĠviewHolder : ĠRecyclerView . ViewHolder , Ġd X : ĠFloat , Ġd Y : ĠFloat , Ġaction State : ĠInt , Ġis Currently Active : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( action State Ġ== ĠItem Touch Helper . ACTION _ STATE _ SW I PE ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠviewHolder . item View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= ĠitemView . bottom . toFloat () Ġ- ĠitemView . top . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġheight Ġ/ Ġ 3 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dX Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackground Ġ= ĠRect F ( item View . left . toFloat (), ĠitemView . top . toFloat (), Ġd X , ĠitemView . bottom . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Dest Ġ= ĠRect F ( item View . left . toFloat () Ġ+ Ġwidth , ĠitemView . top . toFloat () Ġ+ Ġwidth , ĠitemView . left . toFloat () Ġ+ Ġ 2 Ġ* Ġwidth , ĠitemView . bottom . toFloat () Ġ- Ġwidth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Rect ( background , Ġpaint Left ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Bitmap ( View Util . get Bitmap ( drawable Left ), Ġnull , Ġicon Dest , Ġpaint Left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackground Ġ= ĠRect F ( item View . right . toFloat () Ġ+ Ġd X , ĠitemView . top . toFloat (), ĠitemView . right . toFloat (), ĠitemView . bottom . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Dest Ġ= ĠRect F ( item View . right . toFloat () Ġ- Ġ 2 Ġ* Ġwidth , ĠitemView . top . toFloat () Ġ+ Ġwidth , ĠitemView . right . toFloat () Ġ- Ġwidth , ĠitemView . bottom . toFloat () Ġ- Ġwidth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Rect ( background , Ġpaint Right ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Bitmap ( View Util . get Bitmap ( drawable Right ), Ġnull , Ġicon Dest , Ġpaint Right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Child Draw ( c , Ġre cyclerView , ĠviewHolder , Ġd X , Ġd Y , Ġaction State , Ġis Currently Active ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Item Swipe Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Sw ip ed ( position : ĠInt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠBuilder ( internal Ġval Ġdrag Dirs : ĠInt , Ġinternal Ġval Ġswipe Dirs : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġdrawable Left : ĠDrawable ĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġdrawable Right : ĠDrawable ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġbg Color Swipe Left : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġbg Color Swipe Right : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġon Item Swipe Left Listener : ĠOn Item Swipe Listener ĊĠĠĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġon Item Swipe Right Listener : ĠOn Item Swipe Listener ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġswipe Enabled : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġfun Ġdrawable Left ( value : ĠDrawable ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Left Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdrawable Right ( value : ĠDrawable ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Right Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbg Color Swipe Left ( value : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbg Color Swipe Left Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbg Color Swipe Right ( value : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbg Color Swipe Right Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Item Swipe Left Listener ( value : ĠOn Item Swipe Listener ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Swipe Left Listener Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Item Swipe Right Listener ( value : ĠOn Item Swipe Listener ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Swipe Right Listener Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġswipe Enabled ( value : ĠBoolean ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Enabled Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild () Ġ= ĠSw ipe Item Touch Helper Callback ( this ) ĊĠĠĠ Ġ} Ċ } Ċ