Android 如何防止在 RecyclerView 上向左或向右滑动
How to prevent swipe left or right on a RecyclerView in Android
我创建了一个简单的 RecyclerView,我正在使用下面的滑动监听器:
//swipe items
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
//do nothing, we only care about swiping
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
if(swipeDir == ItemTouchHelper.RIGHT){
Toast.makeText(getContext(), "Swiped right", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getContext(), "Swiped left", Toast.LENGTH_SHORT).show();
}
}
}).attachToRecyclerView(recyclerView);
我想只允许右滑而阻止左滑。因此,当用户尝试向左滑动时,我希望该项目不会消失。
我该怎么做?
如果您只想启用某些 swipe/drag 移动,您需要重写 ItemTouchHelper.Callback
的方法 @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder)
(ItemTouchHelper.SimpleCallback
的超类)
例如,如果您只想启用右滑:
@Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
int dragFlags = 0;
int swipeFlags = ItemTouchHelper.RIGHT;
return makeMovementFlags(dragFlags, swipeFlags);
}
我创建了一个简单的 RecyclerView,我正在使用下面的滑动监听器:
//swipe items
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
//do nothing, we only care about swiping
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
if(swipeDir == ItemTouchHelper.RIGHT){
Toast.makeText(getContext(), "Swiped right", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getContext(), "Swiped left", Toast.LENGTH_SHORT).show();
}
}
}).attachToRecyclerView(recyclerView);
我想只允许右滑而阻止左滑。因此,当用户尝试向左滑动时,我希望该项目不会消失。
我该怎么做?
如果您只想启用某些 swipe/drag 移动,您需要重写 ItemTouchHelper.Callback
的方法 @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder)
(ItemTouchHelper.SimpleCallback
的超类)
例如,如果您只想启用右滑:
@Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
int dragFlags = 0;
int swipeFlags = ItemTouchHelper.RIGHT;
return makeMovementFlags(dragFlags, swipeFlags);
}