So, I have RecyclerView with items. When user swipe item on the left side should appers button Delete on the red background. I created drawing by swipe. but when I stop swiping the red rectangle dissapers. How to do it in a such way that after swiping I saw red rectangle? Pay attention to onChildDrawOver()
ItemTouchHelper swipeToDismissTouchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
public void onChildDrawOver(Canvas canvas, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
float dX, float dY, int actionState, boolean isCurrentlyActive) {
LinearLayout linearLayout = (LinearLayout) recyclerView.findViewById(R.id.linearLayout);
MyAdapter.MyViewHolder vh = (MyAdapter.MyViewHolder) viewHolder;
vh.mBtn.setVisibility(View.VISIBLE);
Paint p = new Paint();
if (dX < 0) {
p.setARGB(255, 255, 0, 0);
} else {
p.setARGB(255, 0, 255, 0);
}
canvas.drawRect(linearLayout.getLeft() + dX, linearLayout.getTop() + dY, linearLayout.getRight(), linearLayout.getBottom(), p);
p.setTextSize(20);
canvas.drawText("Delete", linearLayout.getLeft(), linearLayout.getTop() / 2, p);
// super.onChildDraw(canvas, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
// callback for drag-n-drop, false to skip this feature
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
adapter.showDeleteBtn((MyAdapter.MyViewHolder)viewHolder);
list.remove(viewHolder.getAdapterPosition());
adapter.notifyItemRemoved(viewHolder.getAdapterPosition());
}
});
swipeToDismissTouchHelper.attachToRecyclerView(recyclerView);