Ho un problema con ItemTouchHelper di RecyclerView.android - come catturare l'azione Drop di ItemTouchHelper che viene utilizzato con RecyclerView
Sto facendo un gioco. Il tabellone di gioco è in realtà un RecyclerView. RecyclerView ha GridLayoutManager con un certo numero di span. Voglio implementare trascinare & eliminare elementi di recyclerview. Qualsiasi oggetto può trascinare su tutte le direzioni (su, giù, sinistra, destra).
private void initializeLayout() {
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutFrozen(true);
recyclerView.setNestedScrollingEnabled(false);
// set layout manager
GridLayoutManager layoutManager = new GridLayoutManager(getContext(), BOARD_SIZE,
LinearLayoutManager.VERTICAL, true);
recyclerView.setLayoutManager(layoutManager);
// Extend the Callback class
ItemTouchHelper.Callback itemTouchCallback = new ItemTouchHelper.Callback() {
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
Log.w(TAG, "onMove");
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
// Application does not include swipe feature.
}
@Override
public void onMoved(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
int fromPos, RecyclerView.ViewHolder target, int toPos, int x, int y) {
Log.d(TAG, "onMoved");
// this is calling every time, but I need only when user dropped item, not after every onMove function.
}
@Override
public boolean isItemViewSwipeEnabled() {
return false;
}
@Override
public boolean isLongPressDragEnabled() {
return true;
}
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.START | ItemTouchHelper.END;
int swipeFlags = 0;
return makeMovementFlags(dragFlags, swipeFlags);
}
};
ItemTouchHelper touchHelper = new ItemTouchHelper(itemTouchCallback);
touchHelper.attachToRecyclerView(recyclerView);
}
è così, perché la funzione di onMoved ItemTouchHelper funziona quando ancora si trascina punto all'ordine del RecyclerView? Come posso raggiungere questo obiettivo ?
stavo cercando questo: =) – Beyaz
funziona come previsto – andre719mv
ho cercato di capire come sapere il calo è stato completato. La tua spiegazione di clearView() è perfetta. Grazie per aver mostrato anche l'implementazione. – seekingStillness