2016-11-16 2 views
0

Я создал перетаскивание в recylerview с помощью ItemTouchHelper.Callback, это 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); 
    } 
} 

Тогда только ваши предметы должны быть перетащены &, тогда как верхний и нижний колонтитулы не могут быть перемещены вручную.