belongs to Maven artifact com.android.support:recyclerview-v7:28.0.0-alpha1
ItemTouchHelper.Callback
public
static
abstract
class
ItemTouchHelper.Callback
extends Object
java.lang.Object | |
↳ | android.support.v7.widget.helper.ItemTouchHelper.Callback |
![]() |
This class is the contract between ItemTouchHelper and your application. It lets you control which touch behaviors are enabled per each ViewHolder and also receive callbacks when user performs these actions.
To control which actions user can take on each view, you should override
getMovementFlags(RecyclerView, ViewHolder)
and return appropriate set
of direction flags. (LEFT
, RIGHT
, START
, END
,
UP
, DOWN
). You can use
makeMovementFlags(int, int)
to easily construct it. Alternatively, you can use
ItemTouchHelper.SimpleCallback
.
If user drags an item, ItemTouchHelper will call
onMove(recyclerView, dragged, target)
.
Upon receiving this callback, you should move the item from the old position
(dragged.getAdapterPosition()
) to new position (target.getAdapterPosition()
)
in your adapter and also call notifyItemMoved(int, int)
.
To control where a View can be dropped, you can override
canDropOver(RecyclerView, ViewHolder, ViewHolder)
. When a
dragging View overlaps multiple other views, Callback chooses the closest View with which
dragged View might have changed positions. Although this approach works for many use cases,
if you have a custom LayoutManager, you can override
chooseDropTarget(ViewHolder, java.util.List, int, int)
to select a
custom drop target.
When a View is swiped, ItemTouchHelper animates it until it goes out of bounds, then calls
onSwiped(ViewHolder, int)
. At this point, you should update your
adapter (e.g. remove the item) and call related Adapter#notify event.
Summary
Constants | |
---|---|
int |
DEFAULT_DRAG_ANIMATION_DURATION
|
int |
DEFAULT_SWIPE_ANIMATION_DURATION
|
Public constructors | |
---|---|
ItemTouchHelper.Callback()
|
Public methods | |
---|---|
boolean
|
canDropOver(RecyclerView recyclerView, RecyclerView.ViewHolder current, RecyclerView.ViewHolder target)
Return true if the current ViewHolder can be dropped over the the target ViewHolder. |
RecyclerView.ViewHolder
|
chooseDropTarget(RecyclerView.ViewHolder selected, List<RecyclerView.ViewHolder> dropTargets, int curX, int curY)
Called by ItemTouchHelper to select a drop target from the list of ViewHolders that are under the dragged View. |
void
|
clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder)
Called by the ItemTouchHelper when the user interaction with an element is over and it also completed its animation. |
int
|
convertToAbsoluteDirection(int flags, int layoutDirection)
Converts a given set of flags to absolution direction which means |
static
int
|
convertToRelativeDirection(int flags, int layoutDirection)
Replaces a movement direction with its relative version by taking layout direction into account. |
long
|
getAnimationDuration(RecyclerView recyclerView, int animationType, float animateDx, float animateDy)
Called by the ItemTouchHelper when user action finished on a ViewHolder and now the View will be animated to its final position. |
int
|
getBoundingBoxMargin()
When finding views under a dragged view, by default, ItemTouchHelper searches for views that overlap with the dragged View. |
static
ItemTouchUIUtil
|
getDefaultUIUtil()
|