首页 > 解决方案 > 如何知道 recyclerview 单元格被刷卡的方向?

问题描述

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

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

我正在通过 ItemTouchHelper 的以下方法

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

        return super.getDragDirs(recyclerView, viewHolder);
    }

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

标签: androidandroid-recyclerviewitemtouchhelper

解决方案


一旦选择了正在滑动的视图并开始向右或向左移动,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);
    }
}

推荐阅读