package Ġcom . an and bose . demo . sw ip edis miss Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ class ĠSw ipe Callback ( context : ĠContext , Ġval Ġadapter : ĠRecipe Name Adapter ) Ġ: ĊĠĠĠĠĠĠĠ ĠItem Touch Helper . Simple Callback ( 0 , ĠItem Touch Helper . LEFT ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Swipe Callback " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġdelete ButtonText : ĠString ? Ġ= Ġ" Delete " ĊĠĠĠ Ġvar Ġdelete Button Type face : ĠType face Ġ= ĠType face . DEFAULT ĊĠĠĠ Ġvar Ġdelete ButtonText Size Ġ= Ġ 1 4 f ĊĊĠĠĠ Ġprivate Ġval Ġdp Ġ= Ġcontext . resources . display Metrics . density ĊĠĠĠ Ġprivate Ġval Ġred Rect Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġval Ġtext Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠ Ġprivate Ġval Ġtext Rect Ġ= ĠRect () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġred Rect Paint . color Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠ Ġtext Paint . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ ĠonDelete Button Updated () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Move ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget : ĠRecyclerView . ViewHolder ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder : ĠRecyclerView . ViewHolder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠviewHolder . adapter Position ĊĠĠĠĠĠĠĠ Ġadapter . recipes ?. remove At ( position ) ĊĠĠĠĠĠĠĠ Ġadapter . notify Item Removed ( 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 ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Child Draw ( c , Ġre cyclerView , ĠviewHolder , Ġd X , Ġd Y , Ġaction State , Ġis Currently Active ) ĊĠĠĠĠĠĠĠ Ġdraw Red Rect ( c , Ġd X , ĠviewHolder . item View ) ĊĠĠĠĠĠĠĠ Ġdraw Text ( c , Ġd X , ĠviewHolder . item View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Red Rect ( canvas : ĠCanvas , Ġd X : ĠFloat , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġcanvas . width . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġright Ġ+ Ġd X ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . top . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . bottom . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġred Rect Paint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Text ( canvas : ĠCanvas , Ġd X : ĠFloat , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġdelete ButtonText ĊĠĠĠĠĠĠĠ Ġif Ġ( text Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcw Ġ= Ġcanvas . width . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġcw Ġ+ Ġd X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġview . top . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġview . bottom . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġty Ġ= Ġ( bottom Ġ- Ġtop ) Ġ/ Ġ 2 f Ġ+ Ġtext Rect . height (). toFloat () Ġ/ Ġ 2 f Ġ+ Ġtop ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(- dX Ġ< Ġ( text Rect . width (). toFloat () Ġ+ Ġ 2 f Ġ* Ġ 1 6 f Ġ* Ġdp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Ġ= Ġleft Ġ+ Ġ 1 6 f Ġ* Ġdp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( text , Ġtx , Ġty , Ġtext Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Ġ= Ġcw Ġ- Ġtext Rect . width (). toFloat () Ġ- Ġ 1 6 f Ġ* Ġdp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Text ( text , Ġtx , Ġty , Ġtext Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonDelete Button Updated () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġthis . delete ButtonText ĊĠĠĠĠĠĠĠ Ġif Ġ( text Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . type face Ġ= Ġdelete Button Type face ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . text Size Ġ= Ġdelete ButtonText Size Ġ* Ġdp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Paint . getText Bounds ( text , Ġ 0 , Ġtext . length , Ġtext Rect ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }