Как добавить салфетки слева направо в recyclerview

#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

Добавить в избранное
проведите пальцем, чтобы удалить