У меня есть вертикальный LinearLayout и внутри него есть RecyclerView, который можно прокручивать вверх и вниз, недавно я прикрепил обратный вызов ItemTouchHelper к RecyclerView, чтобы его элементы можно было исключить, перетаскивая их влево или вправо, проблема в том, что боковые перетаскивания легко принимаются, а движение неправильно понимается, мешая действиям прокрутки вверх и вниз, я прочитал документацию ItemTouchHelper.Callback и не нашел ничего полезного, поскольку единственными атрибутами для параметров перетаскивания являются ВВЕРХ и ВНИЗ, КОНЕЦ и СТАРТ, ВПРАВО и ВЛЕВО.
Я также думаю об удалении бокового смещения из RecyclerView и присоединении его к списку в целом, поэтому показ других списков при выполнении этого решения будет таким же, поскольку в любом случае эти 2 возможных движения будут?
Вот мой ItemTouch.Callback код:
private void recyclerSwipe(){
ItemTouchHelper.Callback itemTouch= new ItemTouchHelper.Callback() {
/**getMovementFlags()
* configuring the movements behavior
* */
@Override
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
/**ACTION_STATE_IDLE
* denies drag and drop movements
* (up, down, left, right)
* */
int dragFlags=ItemTouchHelper.ACTION_STATE_IDLE;
/**START,END
* allows swiping a recyclerView side to side
* */
int swipeFlags=ItemTouchHelper.START|ItemTouchHelper.END;
return makeMovementFlags(dragFlags,swipeFlags);
}
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
return false;
}
/**onSwiped()
* setting reactions to user's drags
* */
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
deleteTransaction(viewHolder);
}
};
/**attaching swipe to a recyclerView instance*/
new ItemTouchHelper(itemTouch).attachToRecyclerView(recView);
}