Created
January 17, 2020 10:18
-
-
Save JaldeepAsodariya/d553ecb75791f83232d32e56458dbc79 to your computer and use it in GitHub Desktop.
Recyclerview swipe example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
... | |
private void initSwipe() { | |
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) { | |
@Override | |
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) { | |
return false; | |
} | |
@Override | |
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) { | |
int position = viewHolder.getAdapterPosition(); | |
if (direction == ItemTouchHelper.RIGHT) { | |
mRcyclrAdapter.removeItem(position); | |
} | |
} | |
@Override | |
public void onChildDraw(@NonNull Canvas canvas, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { | |
super.onChildDraw(canvas, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); | |
View itemView = viewHolder.itemView; | |
Paint paint = new Paint(); | |
Bitmap iconBitmap; | |
if (dX > 0) { | |
iconBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_delete); | |
paint.setColor(ContextCompat.getColor(getContext(), R.color.red)); | |
canvas.drawRect(itemView.getLeft(), itemView.getTop(), | |
itemView.getLeft() + dX, itemView.getBottom(), paint); | |
// Set the image icon for Right side swipe | |
canvas.drawBitmap(iconBitmap, | |
itemView.getLeft() + convertDpToPx(16), | |
itemView.getTop() + (itemView.getBottom() - itemView.getTop() - iconBitmap.getHeight()) / 2, | |
paint); | |
} | |
float ALPHA_FULL = 1.0f; | |
// Fade out the view as it is swiped out of the parent's bounds | |
float alpha = ALPHA_FULL - Math.abs(dX) / viewHolder.itemView.getWidth(); | |
viewHolder.itemView.setAlpha(alpha); | |
viewHolder.itemView.setTranslationX(dX); | |
super.onChildDraw(canvas, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); | |
} | |
}; | |
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback); | |
itemTouchHelper.attachToRecyclerView(recyclrvw); | |
} | |
private int convertDpToPx(int dp) { | |
return Math.round(dp * (getResources().getDisplayMetrics().xdpi / DisplayMetrics.DENSITY_DEFAULT)); | |
} | |
... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment