Disable Swipe for position in RecyclerView using ItemTouchHelper.SimpleCallback

前端 未结 7 757
面向向阳花
面向向阳花 2021-01-30 02:44

I am using recyclerview 22.2.0 and the helper class ItemTouchHelper.SimpleCallback to enable swipe-to-dismiss option to my list. But as I have a type of header on it, I

7条回答
  •  野性不改
    2021-01-30 03:23

    After playing a bit, I managed that SimpleCallback has a method called getSwipeDirs(). As I have a specific ViewHolder for the not swipable position, I can make use of instanceof to avoid the swipe. If that's not your case, you can perform this control using the position of ViewHolder in the Adapter.

    Java

    @Override
    public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
        if (viewHolder instanceof CartAdapter.MyViewHolder) return 0;
        return super.getSwipeDirs(recyclerView, viewHolder);
    }
    

    Kotlin

    override fun getSwipeDirs (recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {
        if (viewHolder is CartAdapter.MyViewHolder) return 0
        return super.getSwipeDirs(recyclerView, viewHolder)
    }
    

提交回复
热议问题