A very easy-to-use and non-intrusive implement of Swipe to dismiss for RecyclerView.
- Add these lines to your
build.gradle
repositories {
maven {
url "https://jitpack.io"
}
}
dependencies {
compile 'com.github.CodeFalling:RecyclerViewSwipeDismiss:v1.1.3'
}
- Build
onTouchListener
and bind it to yourRecyclerView
SwipeDismissRecyclerViewTouchListener listener = new SwipeDismissRecyclerViewTouchListener.Builder(
recyclerView,
new SwipeDismissRecyclerViewTouchListener.DismissCallbacks() {
@Override
public boolean canDismiss(int position) {
return true;
}
@Override
public void onDismiss(View view) {
// Do what you want when dismiss
}
})
.setIsVertical(false)
.setItemTouchCallback(
new SwipeDismissRecyclerViewTouchListener.OnItemTouchCallBack() {
@Override
public void onTouch(int index) {
// Do what you want when item be touched
}
})
.setItemClickCallback(new SwipeDismissRecyclerViewTouchListener.OnItemClickCallBack() {
@Override
public void onClick(int position) {
// Do what you want when item be clicked }
})
.setBackgroundId(R.drawable.bg_item_normal, R.drawable.bg_item_selected)
.create();
recyclerView.setOnTouchListener(listener);
-
setIsVertical(false)
means allow swipe in horizontal direction -
listener.setEnabled(false)
can disable swipe to dismiss -
onTouch
will be called when MOUSE_UP on item without swipe -
onClick
will be called when ACTION_UP on item within 1 second and move no more than a fixed distance -
By use
setBackgroundId
, you can set background id for item's normal and pressed state, just like the normal effect in RecyclerView
You can see sample code in sample/MainActivity.java