0

在我的 recyclerview 中,我附加了 ItemTouchHelper。用户可以双向滑动,即左右滑动。

我想知道是否有可能在用户开始向左或向右拖动单元格时而不是在用户刷过 recyclerview 的单元格后才知道。基于此,我需要对单元格采取一些措施。

我正在通过 ItemTouchHelper 的以下方法

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

        return super.getDragDirs(recyclerView, viewHolder);
    }

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

4

2 回答 2

2

一旦选择了正在滑动的视图并开始向右或向左移动,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);
    }
}
于 2018-04-30T11:17:41.977 回答
1
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 );
于 2019-03-09T21:30:45.517 回答