I need to listen to the user when he stops drag and drop on my RecyclerView (when he drops the selected item).
Can I get this Information through my ItemTouchHelper?
Thanks for helping
Mark: At the moment i only now when the user still moves the item :)
@Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) { if (source.getItemViewType() != target.getItemViewType()) { return false; } // Notify the adapter of the move mAdapter.onItemMove(source.getAdapterPosition(), target.getAdapterPosition()); return true; }
UPDATED
First you can define where an object can be dropped by implementing canDropOver
@Override public boolean canDropOver(RecyclerView recyclerView, RecyclerView.ViewHolder current, RecyclerView.ViewHolder target) { return current.getItemViewType() == getItemViewType(); }
Update your adapter you want to use onMove
this can be called multiple during a drag operation
@Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { adapter.moveItem(viewHolder.getAdapterPosition(), target.getAdapterPosition()); return true; }
To detect when an interaction with an element is over implement clearView
this is for any action type (drag or swipe) in the even that it succeeds (item moved or swiped) or is canceled (item not moved or swiped)
@Override public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { super.clearView(recyclerView, viewHolder); // Action finished }
You can override onSelectedChange in your implementation of ItemTouchHelper.Callback(), such as:
override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) { super.onSelectedChanged(viewHolder, actionState) when (actionState) { ItemTouchHelper.ACTION_STATE_DRAG -> Log.d("DragTest","Start to drag: $actionState") ItemTouchHelper.ACTION_STATE_SWIPE -> Log.d("DragTest","Start to swipe: $actionState") ItemTouchHelper.ACTION_STATE_IDLE -> { Log.d("DragTest","End action: $actionState") } } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With