Android 如何在没有拖放页眉和页脚的情况下在recyclerview中创建拖放?
我使用ItemTouchHelper在recylerview中创建了拖放。回调,它正在工作。但是我在recylerview中有页眉和页脚,我不想拖动页眉和页脚。如何解决这个问题,这是我的代码 回收率Android 如何在没有拖放页眉和页脚的情况下在recyclerview中创建拖放?,android,drag-and-drop,android-recyclerview,Android,Drag And Drop,Android Recyclerview,我使用ItemTouchHelper在recylerview中创建了拖放。回调,它正在工作。但是我在recylerview中有页眉和页脚,我不想拖动页眉和页脚。如何解决这个问题,这是我的代码 回收率 ItemTouchHelper.Callback callback = new SwipeAndDrag(pick_up_mAdapter); ItemTouchHelper touchHelper = new ItemTouchHelper(callback);
ItemTouchHelper.Callback callback = new SwipeAndDrag(pick_up_mAdapter);
ItemTouchHelper touchHelper = new ItemTouchHelper(callback);
touchHelper.attachToRecyclerView(recyclerView);
SwipeAndDrag.java
public class SwipeAndDrag extends ItemTouchHelper.Callback {
private final ItemTouchHelperAdapter mAdapter;
private RouteInformation points;
public SwipeAndDrag(ItemTouchHelperAdapter adapter) {
mAdapter = adapter;
}
@Override
public boolean isLongPressDragEnabled() {
return false;
}
@Override
public boolean isItemViewSwipeEnabled() {
return true;
}
@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) {
mAdapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
mAdapter.onItemDismiss(viewHolder.getAdapterPosition());
}
}
您应该像这样修改getMovementFlags方法(对其进行了测试,似乎还可以):
然后,只能拖放您的项目,而不能手动移动页眉和页脚。您应该像这样修改getMovementFlags方法(对其进行了测试,似乎还可以):
然后,只能拖放项目,而不能手动移动页眉和页脚。是否有开始拖动的dragArea或按钮?是否有开始拖动的dragArea或按钮?
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder){
if(viewHolder instanceof yourFooterOrHeaderViewholderClass){
int dragFlags = 0; // then, they can't be dragged
int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
return makeMovementFlags(dragFlags, swipeFlags);
}else{ // if(viewHolder instanceof yourNormalItemViewHolderClass)
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
return makeMovementFlags(dragFlags, swipeFlags);
}
}