如何知道recyclerview cell被刷的方向?

How to know the direction in which recyclerview cell is being swiped?

我已将 ItemTouchHelper 附加到我的 recyclerview。用户可以左右滑动。

我想知道是否可以在用户开始向左或向右拖动单元格时立即知道,而不是在用户滑动 recyclerview 的单元格后知道。基于此,我需要对单元格采取一些操作。

我正在使用 ItemTouchHelper 的以下方法

@Override
    public int getDragDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {

        return super.getDragDirs(recyclerView, viewHolder);
    }

但我不知道如何使用它,因为文档不正确。

您可以在 onChildDraw()ItemTouchHelper.Callback 中检查滑动方向,只要选中正在滑动的视图并开始向右或向左移动:

@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
    if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
        // Here, if dX > 0 then swiping right. 
        // If dX < 0 then swiping left. 
        // If dX == 0 then at at start position.
    } else {
        super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
    }
}
new ItemTouchHelper( new ItemTouchHelper.SimpleCallback( 0,
        ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT ) {
    @Override
    public boolean onMove(RecyclerView recyclerView,
                          RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
        return false;
    }

    @Override
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
        int adapterPosition = viewHolder.getAdapterPosition();
        if (direction == ItemTouchHelper.RIGHT) {
            Toast.makeText( getContext(), "Right", Toast.LENGTH_SHORT ).show();
        } else if (direction == ItemTouchHelper.LEFT) {
            Toast.makeText( getContext(), "Left", Toast.LENGTH_SHORT ).show();
        }

    }
} ).attachToRecyclerView( myProductFgRecyclerV );