我需要改变基于滑动方向的行项的背景颜色,如果向右滑动,则将颜色更改为绿色,如果向左滑动,则将颜色更改为红色。
但我发现很难弄清楚刷卡的方向。
这是我的代码。
public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback
{
private final ItemTouchHelperAdapter mAdapter;
public SimpleItemTouchHelperCallback(ItemTouchHelperAdapter mAdapter) {
this.mAdapter = mAdapter;
}
@Override
public boolean isItemViewSwipeEnabled() {
return true;
}
@Override
public boolean isLongPressDragEnabled() {
return false;
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
final int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
return makeMovementFlags(dragFlags,swipeFlags);
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
if(direction == ItemTouchHelper.LEFT){
Log.i("Swipe direction : ","Left");
}
else if (direction == ItemTouchHelper.RIGHT){
Log.i("Swipe direction : ","Right");
}
mAdapter.onItemDismiss(viewHolder.getAdapterPosition());
}
}我在日志里没有得到任何价值。
请提个建议。
发布于 2019-03-18 22:54:23
如拉米斯所示,您可以使用ItemTouchHelper.SimpleCallback的onChildDraw回调来检测swipe 的方向,同时swipe正在进行,然后您可以使用此回调根据swipe的方向显示不同的项目背景。完成后,onSwiped回调将检测滑动的方向,您可以在那里决定要采取的操作。
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView,
@NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY,
int actionState, boolean isCurrentlyActive) {
// dX (float) is the amount of horizontal displacement caused by user's action.
// If the horizontal displacement is positive the item is being
// swiped to the RIGHT, if it is negative the item is being
// swiped to the LEFT.
if(dX >0) {
// RIGHT swipe
} else {
// LEFT swipe
}
}
}).attachToRecyclerView(mRecyclerView);发布于 2017-08-01 14:20:13
您可以使用onChildDraw方法,有关完整的代码Swipable Recycler view,请参阅下面的教程
https://stackoverflow.com/questions/45430223
复制相似问题