-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSwipeToDelete.kt
More file actions
51 lines (40 loc) · 1.5 KB
/
SwipeToDelete.kt
File metadata and controls
51 lines (40 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.kedia.swipetodelete
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.ItemTouchHelper.RIGHT
import androidx.recyclerview.widget.RecyclerView
object SwipeToDelete {
fun RecyclerView.addSwipeToDelete(
list: List<DIRECTION> = emptyList(),
listener: OnSwiped? = null
) {
var swipeDirs = RIGHT
for (element in list) {
if (element != DIRECTION.RIGHT) {
swipeDirs = swipeDirs or DIRECTION.valueOf(element.name).direction
}
}
val simpleCallback = object : ItemTouchHelper.SimpleCallback(0 , swipeDirs) {
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
this@addSwipeToDelete.adapter?.notifyItemRemoved(viewHolder.adapterPosition)
listener?.swipeToDelete(adapterPosition = viewHolder.adapterPosition)
}
}
ItemTouchHelper(simpleCallback).attachToRecyclerView(this)
}
interface OnSwiped {
fun swipeToDelete(adapterPosition: Int)
}
enum class DIRECTION(val direction: Int) {
UP (ItemTouchHelper.UP),
DOWN(ItemTouchHelper.DOWN),
RIGHT(ItemTouchHelper.RIGHT),
LEFT(ItemTouchHelper.LEFT)
}
}