Есть ли способ установить определенный диапазон углов для ItemTouchHelper.Callback для запуска метода onSwiped? - PullRequest
1 голос
/ 18 апреля 2019

У меня есть вертикальный 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);
    }
...