在我的RecyclerView
上使用ItemTouchHelper.SimpleCallback
控制拖放事件,如下所示:
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
int fromPosition = viewHolder.getAdapterPosition();
int toPosition = target.getAdapterPosition();
Collections.swap(adapter.getShelves(), fromPosition, toPosition);
adapter.notifyItemMoved(fromPosition, toPosition);
return true;
}
用长按拖着的物品。当拖拽项溢出屏幕时,正常开始向其方向滚动。用于拖动的支架部分位于物件的顶部,因此向下拖动时没有任何问题,但向上拖动对人们来说非常困难,因为手指会溢出设备。当没有到达屏幕边界时,或者在某些边距之前,如何开始向上/向下拖动?
发布于 2020-05-30 08:52:35
您可以使用库github link
添加到依赖项:
dependencies {
implementation 'com.thesurix.gesturerecycler:gesture-recycler:1.11.0'
}
和kotlin:
// Define your RecyclerView and adapter as usually
val manager = LinearLayoutManager(context)
recyclerView.setHasFixedSize(true)
recyclerView.layoutManager = manager
// Extend GestureAdapter and write your own
// ViewHolder items must extend GestureViewHolder
val adapter = MonthsAdapter(R.layout.linear_item)
adapter.data = months
recyclerView.adapter = adapter
和刷卡:
val gestureManager = GestureManager.Builder(recyclerView)
// Enable swipe
.setSwipeEnabled(true)
// Enable long press drag and drop
.setLongPressDragEnabled(true)
// Enable manual drag from the beginning, you need to provide View inside your GestureViewHolder
.setManualDragEnabled(true)
// Use custom gesture flags
// Do not use those methods if you want predefined flags for RecyclerView layout manager
.setSwipeFlags(ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT)
.setDragFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN)
.build()
https://stackoverflow.com/questions/62007779
复制