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)
}