两个recycleview的item相互拖拽
时间: 2023-08-19 16:04:06 浏览: 176
两个Recyclerview相互拖Item
要实现两个 RecyclerView 的 Item 相互拖拽,需要使用 ItemTouchHelper 类。具体步骤如下:
1. 在每个 RecyclerView 上设置 ItemTouchHelper.Callback。在这个回调中,实现 onMove 和 onSwiped 方法,分别用于处理拖拽和滑动删除事件。
2. 在 onMove 方法中,获取被拖拽的 Item 的位置和目标位置,并将它们交换。然后调用 RecyclerView.Adapter 的 notifyItemMoved 方法刷新显示。
3. 在 onSwiped 方法中,处理滑动删除事件。
4. 在 RecyclerView 上设置 LayoutManager,以控制 Item 的布局。
5. 需要注意的是,两个 RecyclerView 都需要设置 ItemTouchHelper,以实现相互拖拽。
下面是一个简单的实现示例:
```
ItemTouchHelper.Callback callback = new ItemTouchHelper.Callback() {
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
return makeMovementFlags(dragFlags, swipeFlags);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
int fromPosition = viewHolder.getAdapterPosition();
int toPosition = target.getAdapterPosition();
mAdapter.swapItems(fromPosition, toPosition);
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
mAdapter.removeItem(position);
}
};
ItemTouchHelper helper = new ItemTouchHelper(callback);
helper.attachToRecyclerView(recyclerView1);
helper.attachToRecyclerView(recyclerView2);
```
在这个示例中,我们定义了一个 ItemTouchHelper.Callback,并在其中实现了 onMove 和 onSwiped 方法。然后,我们将它们分别设置到两个 RecyclerView 上,以实现相互拖拽。
阅读全文