使用环境:
需要拖动列表,删除列表时使用。
使用方法:
//为RecycleView绑定触摸事件 ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.Callback() { @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { //竖向列表 int dragFlags = ItemTouchHelper.UP|ItemTouchHelper.DOWN;//拖拽 int swipeFlags = ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT;//侧滑删除 return makeMovementFlags(dragFlags,swipeFlags); //横向列表 // int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;//拖拽 // int swipeFlags = 0;//侧滑删除 // return makeMovementFlags(dragFlags, swipeFlags); } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { //滑动事件 Collections.swap(strings, viewHolder.getAdapterPosition(), target.getAdapterPosition()); photoAdapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition()); return false; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { //侧滑事件 list.remove(viewHolder.getAdapterPosition()); photoAdapter.notifyItemRemoved(viewHolder.getAdapterPosition()); } @Override public boolean isLongPressDragEnabled() { //是否可拖拽 return true; } });
引用方法:
helper.attachToRecyclerView(touraddBinding.recyclerTour);
注意事项:
当列表时横向的时候,不用使用纵向的方法去调换这个列表