[英]Android - Recycler view set item not swipeable
我正在使用RecyclerView
和ItemTouchHelper.SimpleCallback
=> onSwiped
方法。 回收者視圖中的某些項目正在進行中,我想在其上禁用滑動。
我該怎么做?
您可以在ItemTouchHelper.SimpleCallback
重寫getSwipeDirs() 。 如果您不希望可滑動項目,則返回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;
}
}
}
就我而言,我注意到沒有調用getSwipeDirs() ,可能是因為我也設置了motionFlags 。
我也必須重寫getMovementFlags() ,如下所示:
@Override
public int getMovementFlags(RecyclerView recyclerView,
RecyclerView.ViewHolder viewHolder) {
if (viewHolder instanceof SwipeViewHolder
&& ((SwipeViewHolder) viewHolder).isSwipeable) {
return makeMovementFlags(0, super.getSwipeDirs(recyclerView, viewHolder));
} else {
return makeMovementFlags(0, 0);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.