How to implement swipe on particular part of view holder in recycler view?

Viewed 112

I have a view holder that has a header and body and I want to implement swipe only on the body, so the header stays in place. Any ideas how to do that?

I'm currently using ItemTouchHelper.SimpleCallback for swipe to delete items in my recycler view. enter image description here

    class ItemSwipeHelper() : ItemTouchHelper.SimpleCallback(1, ItemTouchHelper.LEFT) {

    override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) {

     // val itemView: View = viewHolder.itemView.findViewById(R.id.item) // view holder body
        val itemView: View = viewHolder.itemView // view holder body and header
        val height = itemView.bottom.toFloat() - itemView.top.toFloat()
        val width = height / 3

        if (dX < 0) {
            val paint = Paint()

            paint.color = ContextCompat.getColor(recyclerView.context, R.color.md_red_400)

            val background = RectF(itemView.right.toFloat() + dX, itemView.top.toFloat(),
                    itemView.right.toFloat(), itemView.bottom.toFloat())

            c.drawRect(background, paint)

            val icon = BitmapFactory.decodeResource(recyclerView.context.resources,
                    R.drawable.ic_delete_20)

            val dst = RectF(itemView.right.toFloat() - 2 * width,
                    itemView.top.toFloat() + width,
                    itemView.right.toFloat() - width,
                    itemView.bottom.toFloat() - width)

        }
    }

    super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive) 
}
0 Answers
Related