2016-11-16 54 views
0

我使用ItemTouchHelper.Callback创造了recylerview拖放,它是working.But我有页眉和页脚在recylerview我不想拖头和footer.how解决这个问题,这是我的代码如何在没有拖拽页眉和页脚的情况下在recyclerview中创建拖放操作?

recylerviewActivity

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

} 
+0

你有一个dragArea或一个开始拖动的按钮吗? – XxGoliathusxX

回答

1

你应该修改getMovementFlags方法是这样的(测试,它似乎确定):

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

然后,只有您的项目应该拖动&下降,而您的页眉和页脚不能手动移动。