2

私は垂直 LinearLayout を持っており、その中に上下にスクロールできる RecyclerView があります。最近、ItemTouchHelper コールバックを RecyclerView にアタッチして、アイテムを左または右にドラッグして除外できるようにしました。問題は横方向のドラッグは簡単に受け入れられ、動きが誤解され、上下のスクロール アクションが妨げられます。ドラッグ オプションの属性は UP と DOWN のみであるため、ItemTouchHelper.Callback のドキュメントを読みましたが、役立つものは何も見つかりませんでした。 END と START、RIGHT と LEFT。

また、RecyclerView からサイド スワイプを削除して、リスト全体にアタッチすることも考えています。それを行うときに他のリストを表示すると、解決策は同じになります。

ここに私の 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);
    }
4

0 に答える 0