Is it possbile to implement a recycler view the elements of which swipe on diferent directions depending on a condition? I have done some reserch but I haven't found anything regarding this matter.
I am currently using a Recycler View and I have a ItemTouchHelper.SimpleCallback attached to it. This way I can implement a swipe action to all the elements of the recycler list.
My code is this, I am using getSwipeDirs() function to try an implement what I just explained at the beginning of the question, but it doesn't quite work.
ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
switch (direction) {
case ItemTouchHelper.LEFT:
if(!Boolean.parseBoolean(activitiesList.get(position).get(7))) {
String doneActivityID = activitiesList.get(position).get(0);
DA.markActivityAsDone(doneActivityID, true, seeingDay);
}
break;
case ItemTouchHelper.RIGHT:
if(Boolean.parseBoolean(activitiesList.get(position).get(7))) {
String doneActivityID = activitiesList.get(position).get(0);
DA.markActivityAsDone(doneActivityID, false, seeingDay);
}
break;
}
}
@Override
public int getSwipeDirs(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
int position = viewHolder.getAdapterPosition();
Calendar calendar = Calendar.getInstance();
int today = calendar.get(Calendar.DAY_OF_WEEK) - 2;
if (activitiesList.get(position).get(4).equals(getWeekDay(today))) {
if (!Boolean.parseBoolean(activitiesList.get(position).get(7))) {
setDefaultSwipeDirs(ItemTouchHelper.LEFT);
return super.getSwipeDirs(recyclerView, viewHolder);
}
setDefaultSwipeDirs(ItemTouchHelper.RIGHT);
return super.getSwipeDirs(recyclerView, viewHolder);
}
setDefaultSwipeDirs(0);
return super.getSwipeDirs(recyclerView, viewHolder);
}
I would really appreciate if someone could tell me if this is possible, and if so show me how.
Thank you!