我正在使用RecyclerView
and ItemTouchHelper.SimpleCallback
=> onSwiped
方法。回收者视图中的某些项目正在进行中,我想在其上禁用滑动。
我该怎么做?
您可以覆盖getSwipeDirs()在你的ItemTouchHelper.SimpleCallback
。如果您不希望可滑动项目,则返回0。
此方法的第二个参数是要滑动项目的ViewHolder-您可以在ViewHolder中添加一个简单的标志,以指示该项目是否可滑动。
例如:
static class SwipeViewHolder extends RecyclerView.ViewHolder { public boolean isSwipeable; public SwipeViewHolder(View itemView) { super(itemView); } }
和回调:
static class DragAndSwipeCallback extends ItemTouchHelper.SimpleCallback { public DragAndSwipeCallback(int dragDirs, int swipeDirs) { super(dragDirs, swipeDirs); } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { // Perform drag return false; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { // Remove item } @Override public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { if (viewHolder instanceof SwipeViewHolder && ((SwipeViewHolder) viewHolder).isSwipeable) { return super.getSwipeDirs(recyclerView, viewHolder); } else { return 0; } } }