如何知道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 );
我已将 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 );