#android #android-recyclerview #swipe
#Android #android-recyclerview #проведите
Вопрос:
Я пытаюсь добавить функцию салфетки для моего recyclerview. Я перехожу по этой ссылке для добавления салфетки. https://github.com/nikhilpanju/RecyclerViewEnhanced/blob/master/recyclerviewenhanced/src/main/java/com/nikhilpanju/recyclerviewenhanced/RecyclerTouchListener.java
По этой ссылке я могу сделать только свайп справа налево. Я хочу добавить салфетки слева направо. Я попытался добавить функциональность onInterceptTouchEvent
. Но я не могу сделать свайп слева направо. Может ли кто-нибудь помочь мне добавить салфетки слева направо?
Ответ №1:
Чтобы реализовать такое поведение в RecyclerView, вам нужно объявить ItemTouchHelper
, например, так:
// The class to detect swipes and drags
private lateinit var itemTouchHelper: ItemTouchHelper
В ItemTouchHelper
классе есть ItemTouchHelper.SimpleCallback.onChildDraw
метод обратного вызова, в котором вы можете определить, провел ли пользователь вправо или влево по элементу в вашем recyclerview. Итак, теперь мы реализуем этот обратный вызов, например:
private fun setupRecyclerView() {
val myRecyclerView = findViewById<RecyclerView>(R.id.myRecyclerView)
val customAdapter = CustomAdapter()
myRecyclerView.adapter = customAdapter
val simpleCallback = object :
ItemTouchHelper.SimpleCallback(
0,
ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT
) {
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean = false
override fun onChildDraw(
c: Canvas,
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
dX: Float,
dY: Float,
actionState: Int,
isCurrentlyActive: Boolean
) {
// If you want to add a background, a text, an icon
// as the user swipes, this is where to start decorating
// I will link you to a library I created for that below
super.onChildDraw(
c,
recyclerView,
viewHolder,
dX,
dY,
actionState,
isCurrentlyActive
)
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
val position = viewHolder.adapterPosition
when (direction) {
ItemTouchHelper.LEFT -> {
// Do something when a user swept left
}
ItemTouchHelper.RIGHT -> {
// Do something when a user swept right
}
}
}
}
itemTouchHelper = ItemTouchHelper(simpleCallback)
itemTouchHelper.attachToRecyclerView(myRecyclerView)
}
Теперь это поведение салфетки теперь будет прослушиваться в вашем recyclerview.
Кроме того, если вы хотите, чтобы фон, значок или текст отображались при пролистывании пользователем вашего
приложения, вы можете использовать эту потрясающую библиотеку, которую я создал специально для этого использования.
вы можете загрузить его в свой проект, если используете gradle.
Вот ссылка на документацию для этого:
https://github.com/kevingermainbusiness/ItemDecorator