Java 如何禁止通过滑动删除RecyclerView中的特定类型的元素(我希望元素不移动)?
我在RecyclerView中有两种类型的项目:Tier=0和Row=1;我只想用刷子删除“行”。当然,简单地禁止并不成问题。以及如何消除转换接口上元件移位的可能性Java 如何禁止通过滑动删除RecyclerView中的特定类型的元素(我希望元素不移动)?,java,android,Java,Android,我在RecyclerView中有两种类型的项目:Tier=0和Row=1;我只想用刷子删除“行”。当然,简单地禁止并不成问题。以及如何消除转换接口上元件移位的可能性 ItemTouchHelper helper = new ItemTouchHelper( new ItemTouchHandler(0, ItemTouchHelper.LEFT) ); helper.attachToRecyclerView(rec
ItemTouchHelper helper = new ItemTouchHelper(
new ItemTouchHandler(0,
ItemTouchHelper.LEFT)
);
helper.attachToRecyclerView(recyclerView);
阶级本身
private class ItemTouchHandler extends ItemTouchHelper.SimpleCallback {
public ItemTouchHandler(int dragDirs, int swipeDirs) {
super(dragDirs, swipeDirs);
}
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
int from = viewHolder.getAdapterPosition();
int to = target.getAdapterPosition();
Collections.swap(recyclerAdapter.getMoviesList(), from, to);
recyclerAdapter.notifyItemMoved(from, to);
return true;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
recyclerAdapter.deleteRow(viewHolder.getAdapterPosition());
}
这是在删除适配器中的项目:
public void deleteRow(int position) {
moviesList.remove(position);
notifyDataSetChanged();
}
就我而言
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
int dragFlags = 0;
int swipeFlags = 0;
if(recyclerAdapter.getMoviesList().get(viewHolder.getAdapterPosition()).getType()==Element.TYPE_TIER) {
swipeFlags = 0;
} else {
swipeFlags = ItemTouchHelper.LEFT;
}
return makeMovementFlags(dragFlags, swipeFlags);
}