2016-11-16 21 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); 
    } 
} 

然後,只有您的項目應該拖動&下降,而您的頁眉和頁腳不能手動移動。

相關問題