2

Ich bin mit einem Problem mit ItemTouchHelper in Kombination mit SpannedGridLayoutManager in meinem RecyclerView konfrontiert, wird Drag vorzeitig beendet beim Ziehen auf das Element neben dem gezogenen. Ich weiß, dass es ein glitchy Layout-Manager ist, weil es ohne Probleme mit anderen Layout-Managern funktioniert.ItemTouchHelper mit SpannedGridLayoutManager - RecyclerView Probleme

Hat jemand das schon ausgearbeitet?

Antwort

0

Die onSelectedChanged (RecyclerView.ViewHolder, int) Rückruf Informationen über das aktuelle Actionstate bietet: - ACTION_STATE_IDLE: - ACTION_STATE_DRAG - ACTION_STATE_SWIPE

So kann man im Auge behalten, ob die Reihenfolge geändert, und wenn der Status zu ACTION_STATE_IDLE können Sie tun, was Sie tun müssen!

Implementieren Sie eine Rückrufklasse wie folgt.

class CardsTouchHelperCallback extends ItemTouchHelper.Callback { 

... 
@Override 
    public boolean onMove(RecyclerView recyclerView, 
RecyclerView.ViewHolder viewHolder, 
         RecyclerView.ViewHolder target) { 

    int fromPosition = viewHolder.getAdapterPosition(); 
    int toPosition = target.getAdapterPosition(); 

    dragFrom = fromPosition; 
    dragTo = toPosition; 

    mOrderChanged = true; 

    return false; 
} 

@Override 
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) { 
    super.onSelectedChanged(viewHolder, actionState); 

    if (actionState == ItemTouchHelper.ACTION_STATE_IDLE && mOrderChanged) { 
     //doSomething(); 
     touchHelperAdapter.onItemMove(dragFrom, dragTo); 
     mOrderChanged = false; 
    } 
} 
} 
Verwandte Themen