Android 如何在没有拖放页眉和页脚的情况下在recyclerview中创建拖放?

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在recylerview中创建了拖放。回调,它正在工作。但是我在recylerview中有页眉和页脚,我不想拖动页眉和页脚。如何解决这个问题,这是我的代码

回收率

 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);
    }
}