// implementation 'it.xabaras.android:recyclerview-swipedecorator:1.2.2'
// create this in your class
// to manage the deleted model
Food deletedFood = null;
ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
// for arranging rows
@Override
public boolean onMove(@NonNull RecyclerView recyclerView,
@NonNull RecyclerView.ViewHolder viewHolder,
@NonNull RecyclerView.ViewHolder target) {
return false;
}
// for managing swipes
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
deletedFood = foods.get(position);
// remove from the array list
foods.remove(position);
// remove from the actual adapter
cartOrdersAdapter.notifyItemRemoved(position);
Snackbar.make(recyclerView,
"Removed " + deletedFood.getTitle() + " From Your Orders",
Snackbar.LENGTH_LONG)
.setAction("Undo", v -> {
foods.add(position, deletedFood);
cartOrdersAdapter.notifyItemInserted(position);
recyclerView.smoothScrollToPosition(position);
}).setActionTextColor(
ContextCompat.getColor(getActivity(), R.color.colorPrimaryDark))
.show();
}
@Override
public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView,
@NonNull RecyclerView.ViewHolder viewHolder,
float dX, float dY, int actionState, boolean isCurrentlyActive) {
new RecyclerViewSwipeDecorator.Builder(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
.addSwipeLeftBackgroundColor(ContextCompat.getColor(getActivity(), R.color.red))
.addSwipeLeftActionIcon(R.drawable.x_delete_green)
.create()
.decorate();
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
};
}
// in onCreate()
// attach direction to our recyclerview
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
// for arranging rows
@Override
public boolean onMove(@NonNull RecyclerView recyclerView,
@NonNull RecyclerView.ViewHolder viewHolder,
@NonNull RecyclerView.ViewHolder target) {
return false;
}
// for managing swipes
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
switch (direction) {
case ItemTouchHelper.LEFT:
// remove from the array list
foods.remove(position);
// remove from the actual adapter
cartOrdersAdapter.notifyItemRemoved(position);
break;
case ItemTouchHelper.RIGHT:
break;
}
}
};
// for your row item in XML
android:background="@android:color/white"
android:foreground="aBackgorundOfMyChoice"
// create an ItemTouchHelper
ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(
ItemTouchHelper.UP | ItemTouchHelper.DOWN |
ItemTouchHelper.START | ItemTouchHelper.END, 0) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
// the start position
int fromPosition = viewHolder.getAdapterPosition();
// the target position
int toPosition = target.getAdapterPosition();
Collections.swap(foods, fromPosition, toPosition);
recyclerView.getAdapter().notifyItemMoved(fromPosition, toPosition);
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
}
};