1、添加万能适配器依赖:
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46'
2、编写RecyclerView适配器,继承BaseItemDraggableAdapter
public class CategoryEditAdapter extends BaseItemDraggableAdapter<CategorieBaen, BaseViewHolder> {
private List<CategorieBaen> engines;
public CategoryEditAdapter(@Nullable List<CategorieBaen> data, String string) {
super(R.layout.item_category_edit, data);
this.engines = data;
}
@Override
protected void convert(BaseViewHolder helper, CategorieBaen item) {
helper.setText(R.id.item_name_tv, item.getName());
ImageView item_close_iv = helper.getView(R.id.item_close_iv);
}
}
3、编写item回调,继承ItemDragAndSwipeCallback,设置列表第一个和第二个不能拖动位置
public class HomeItemDragAndSwipeCallback extends ItemDragAndSwipeCallback {
public HomeItemDragAndSwipeCallback(BaseItemDraggableAdapter adapter) {
super(adapter);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) {
if (source.getAdapterPosition() == 0||source.getAdapterPosition() == 1||source.getAdapterPosition() ==-1||
target.getAdapterPosition() == 0||target.getAdapterPosition() == 1||target.getAdapterPosition() ==-1){
return false;
}else {
return true;
}
}
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
return super.getMovementFlags(recyclerView, viewHolder);
}
}
4、关联RecyclerView,editAdapter1为CategoryEditAdapter ,tag_rv1为RecyclerView
private void setItemMoveEvent() {
HomeItemDragAndSwipeCallback itemDragAndSwipeCallback = new HomeItemDragAndSwipeCallback(editAdapter1);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemDragAndSwipeCallback);
itemTouchHelper.attachToRecyclerView(tag_rv1);
// 设置拖拽
editAdapter1.enableDragItem(itemTouchHelper);
editAdapter1.setOnItemDragListener(new OnItemDragListener() {
@Override
public void onItemDragStart(RecyclerView.ViewHolder viewHolder, int i) {
mVibrator.vibrate(60);
LogUtils.showLog("onItemDragStart:" + i);
}
@Override
public void onItemDragMoving(RecyclerView.ViewHolder viewHolder, int i, RecyclerView.ViewHolder viewHolder1, int i1) {
LogUtils.showLog("onItemDragMoving:" + "i:" + i + ":i1:" + i1);
}
@Override
public void onItemDragEnd(RecyclerView.ViewHolder viewHolder, int i) {
LogUtils.showLog("onItemDragEnd:" + i);
}
});
}