回收器向左滑动和向右滑动执行不同的操作

Recycler swipe left and swipe right perform different actions

我有以下回收器视图代码,允许用户向右滑动(从视图中删除卡片并从 SQLite 数据库中删除数据),还允许用户移动标签以重新排列。有用。我很开心。

ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN,  ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
            //awesome code when user grabs recycler card to reorder   
        } 

        @Override
        public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
            super.clearView(recyclerView, viewHolder);
            //awesome code to run when user drops card and completes reorder
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
            //awesome code when swiping right to remove recycler card and delete SQLite data
        }
    };
    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
    itemTouchHelper.attachToRecyclerView(recyclerView);

现在,我想添加向左滑动并执行与向右滑动不同的操作的功能。到目前为止我找到的所有解决方案都需要重写我的代码。有任何关于将向左滑动添加到我现有代码的建议吗?

使用 direction 参数 onSwiped()。参见documentation。您可以根据您是向右滑动还是向左滑动进行调整。

onSwiped方法上,添加-

if (direction == ItemTouchHelper.RIGHT) {
//whatever code you want the swipe to perform
}

然后左滑另一个-

if (direction == ItemTouchHelper.LEFT) {
//whatever code you want the swipe to perform
}

对我来说,方向returnsSTART/END不是LEFT/RIGHT,所以这就是我必须做的。

    if(direction == ItemTouchHelper.START) {
        // DO Action for Left

    } else if(direction == ItemTouchHelper.END) {
        // DO Action for Right

    }