Define swipe gestures, move list items and change their appearance.
Add lib to your project
compile 'com.olmur.rvtools:rvtools:0.0.2'
Extend BaseRecyclerAdapter class
public class MainAdapter extends BaseRecyclerAdapter<MainEntity, MainAdapter.ViewHolder> {
...
}
Create ViewHolder that extends BaseViewHolder
public class ViewHolder extends BaseRecyclerAdapter.BaseViewHolder<MainEntity> {
private TextView mTitleTv;
ViewHolder(@NonNull View view) {
super(view);
mTitleTv = (TextView) view.findViewById(R.id.title_tv);
}
@Override
public void bindView(MainEntity element) {
mTitleTv.setText(element.getTitle());
}
}
Create Gestures Listeners
public class MainActivity extends AppCompatActivity implements IOnSwipeLeftAction, IOnSwipeRightAction, IOnMoveAction {
@Override
public void onMove(int fromPosition, int toPosition) {
mAdapter.move(fromPosition, toPosition);
}
@Override
public void onSwipeLeftAction(int position) {
mAdapter.deletItem(position);
}
@Override
public void onSwipeRightAction(int position) {
mAdapter.changeItem(position);
}
}
Create Swipe Context Menu Drawer
public class SwipeMenuDrawer extends SwipeContextMenuDrawer {
private final Paint mLeftPaint;
private final Paint mRightPaint;
public SwipeMenuDrawer() {
mLeftPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mRightPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mLeftPaint.setColor(Color.GREEN);
mRightPaint.setColor(Color.RED);
}
@Override
public void drawRight(@NonNull Canvas canvas, @NonNull View view) {
canvas.drawRect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom(), mLeftPaint);
}
@Override
public void drawLeft(@NonNull Canvas canvas, @NonNull View view) {
canvas.drawRect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom(), mRightPaint);
}
}
To add different behaviour on item select/release implement IViewHolderSelector interface in ViewHolder
public class ViewHolder extends BaseRecyclerAdapter.BaseViewHolder<MainEntity> implements IViewHolderSelector {
...
@Override
public void onSelected() {
itemView.setBackgroundColor(Color.GRAY);
mTitleTv.setTextColor(Color.WHITE);
}
@Override
public void onReleased() {
itemView.setBackgroundColor(Color.WHITE);
mTitleTv.setTextColor(Color.GRAY);
}
}
Create EmptyRecyclerView and provide it with empty view
EmptyRecyclerView recyclerView = (EmptyRecyclerView) findViewById(R.id.empty_recycler_view);
recyclerView.setEmptyView(emptyView);
Create RvTools for your RecyclerView
new RvTools.Builder(recyclerView)
.withSwipeRightAction(this)
.withSwipeLeftAction(this)
.withMoveAction(this, mAdapter, ItemTouchHelper.DOWN | ItemTouchHelper.UP)
.withSwipeContextMenuDrawer(new SwipeMenuDrawer())
.buildAndApplyToRecyclerView();
That's it :)