/** Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 Ġ" M oh am ad re za ĠA man i ĠY eg ane gi " Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT Ġlicense Ċ Ġ* Ċ Ġ* ĠEmail : Ġy g ne gy @ gmail . com Ċ Ġ* ĠGithub : Ġhttps :// github . com / yg ng y Ċ Ġ*/ Ċ Ċ package Ġcom . github . yg ng y . demo . sw ip es ample ĊĊ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . github . yg ng y . multis w ipe .* Ċ Ċ /** Ċ Ġ* ĠA Ġsample Ġ[ RecyclerView ] Ġadapter Ġused Ġto Ġshow Ġdemo Ġlists . Ċ Ġ*/ Ċ class ĠRe cycler Demo Adapter ( context : ĠContext , Ġprivate Ġval ĠdataSet : ĠList < ListItem > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġprivate Ġval ĠonClick : Ġ( Int ) Ġ-> ĠUnit ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Recycler Demo Adapter . ViewHolder > (){ ĊĊĠĠĠ Ġ// val Ġsc Ġ= ĠSw ipe Creator ( context , Ġtrue ) Ġ// ĠCustom ĠSw ipe ĠCreation ĊĠĠĠ Ġval Ġsc Ġ= ĠDefault Swipe Creator ( context , Ġtrue ) Ġ// ĠSimple Ġand ĠDefault ĠSw ipe ĠCreation ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvide Ġa Ġreference Ġto Ġthe Ġtype Ġof Ġviews Ġthat Ġyou Ġare Ġusing ĊĠĠĠĠ Ġ* Ġ( custom ĠViewHolder ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠViewHolder ( private Ġval Ġview : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ), ĠMulti Swipe Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠtextView : ĠTextView Ġ= Ġview . findViewById ( R . id . title ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠimageView : ĠImageView Ġ= Ġview . findViewById ( R . id . like ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠHold Ġleft Ġand Ġright Ġswipe Ġlists Ġand Ġreuse Ġthem ĊĠĠĠĠĠĠĠ Ġ// ĠPrevent Ġre creating Ġthem Ġwhen Ġthere Ġis Ġno Ġneed Ġto Ġcreate Ġit ĊĠĠĠĠĠĠĠ Ġ// ĠOnly Ġrecreate Ġswipe Ġlists Ġwhen Ġyou Ġneed Ġto Ġchange Ġa Ġswipe ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Left Swipe List : ĠLeft Swipe List ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Right Swipe List : ĠRight Swipe List ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġvar Ġitem : ĠListItem ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( list Item : ĠListItem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . item Ġ= Ġlist Item ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= Ġif Ġ( list Item . lik ed ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġlist Item . data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ( list Item . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTesting Ġdifferent Ġswipe Ġcounts Ġbased Ġon Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item . data . startsWith ( TWO _ LEFT _ SW I PE _ ONE _ RIGHT _ SW I PE , Ġtrue ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Left Swipe List Ġ= ĠLeft Swipe List ( sc . share Swipe , Ġsc . cut Swipe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Right Swipe List Ġ= ĠRight Swipe List ( sc . get Like Swipe ( list Item . lik ed )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item . data . startsWith ( ONE _ LEFT _ SW I PE _ TWO _ RIGHT _ SW I PE , Ġtrue ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Left Swipe List Ġ= ĠLeft Swipe List ( sc . share Swipe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Right Swipe List Ġ= ĠRight Swipe List ( sc . get Like Swipe ( list Item . lik ed ), Ġsc . del Swipe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item . data . startsWith ( NO _ LEFT _ SW I PE , Ġtrue ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Left Swipe List Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Right Swipe List Ġ= ĠRight Swipe List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsc . get Like Swipe ( list Item . lik ed ), Ġsc . edit Swipe , Ġsc . del Swipe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item . data . startsWith ( NO _ RIGHT _ SW I PE , Ġtrue ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Left Swipe List Ġ= ĠLeft Swipe List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsc . share Swipe , Ġsc . copy Swipe , Ġsc . cut Swipe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Right Swipe List Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Left Swipe List Ġ= ĠLeft Swipe List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsc . share Swipe , Ġsc . copy Swipe , Ġsc . cut Swipe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Right Swipe List Ġ= ĠRight Swipe List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsc . get Like Swipe ( list Item . lik ed ), Ġsc . edit Swipe , Ġsc . del Swipe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġwill Ġbe Ġcalled Ġa Ġlot Ġso Ġdo ĠNOT Ġcreate Ġany Ġobject Ġhere . ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġleft Swipe List : ĠLeft Swipe List ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġm Left Swipe List ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġwill Ġbe Ġcalled Ġa Ġlot Ġso Ġdo ĠNOT Ġcreate Ġany Ġobject Ġhere . ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġright Swipe List : ĠRight Swipe List ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġm Right Swipe List ĊĊĠĠĠĠĠĠĠ Ġ// ĠHere Ġi Ġcan Ġhandle Ġswipe Ġand Ġreturn Ġsome ĊĠĠĠĠĠĠĠ Ġ// Ġdata Ġto Ġmain ĠMulti Swipe Listener Ġ( if Ġthere Ġis Ġone ) ĊĠĠĠĠĠĠĠ Ġ// Ġfor Ġthis Ġdemo Ġi Ġsimply Ġreturn Ġthis ĠviewHolder ĊĠĠĠĠĠĠĠ Ġ// Ġto ĠMulti Swipe Listener ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Swipe Done ( swipe Id : ĠInt ): ĠAny ? Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCreate Ġnew Ġviews Ġ( inv oked Ġby Ġthe Ġlayout Ġmanager ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( view Group : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġnew Ġview , Ġwhich Ġdefines Ġthe ĠUI Ġof Ġthe Ġlist Ġitem ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( view Group . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . list _ item , Ġview Group , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠReplace Ġthe Ġcontents Ġof Ġa Ġview Ġ( inv oked Ġby Ġthe Ġlayout Ġmanager ) ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( view Holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġelement Ġfrom Ġyour Ġdataset Ġat Ġthis Ġposition Ġand Ġreplace Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġcontents Ġof Ġthe Ġview Ġwith Ġthat Ġelement ĊĠĠĠĠĠĠĠ ĠviewHolder . bind ( data Set [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠReturn Ġthe Ġsize Ġof Ġyour Ġdataset Ġ( inv oked Ġby Ġthe Ġlayout Ġmanager ) ĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= ĠdataSet . size ĊĊ Ċ } Ċ