Hello,
Welcome to our Microsoft Q&A platform!
Are there any easy ways to restrict dragging to vertical?
If you use RecyclerView
in Xamarin.Android
, you can achieve an interface ItemTouchHelper.Callback
, it comes from AndroidX.RecyclerView.Widget
. If we want to restrict dragging to vertical. Override the GetMovementFlags
method, add move restriction by const int dragFlags = ItemTouchHelper.Up | ItemTouchHelper.Down;
and set ItemTouchHelper.ActionStateIdle
, then return it by MakeMovementFlags
method.
public class SimpleItemTouchHelperCallback : ItemTouchHelper.Callback
{
private readonly ITemTouchHelperAdapter _mAdapter;
public SimpleItemTouchHelperCallback(ITemTouchHelperAdapter adapter)
{
_mAdapter = adapter;
}
public override int GetMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder)
{
const int dragFlags = ItemTouchHelper.Up | ItemTouchHelper.Down;
const int swipeFlags = ItemTouchHelper.ActionStateIdle;
return MakeMovementFlags(dragFlags, swipeFlags);
}
public override bool OnMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target)
{
if (viewHolder.ItemViewType != target.ItemViewType)
{
return false;
}
// Notify the adapter of the move
_mAdapter.OnItemMove(viewHolder.AdapterPosition, target.AdapterPosition);
return true;
}
public override void OnSwiped(RecyclerView.ViewHolder viewHolder, int direction)
{
// Notify the adapter of the dismissal
_mAdapter.OnItemDismiss(viewHolder.AdapterPosition);
}
}
Are there any good examples of ways to reorder a RecyclerView?
If you want to this, please Google: ReOrder the list items by drag and drop in xamarin android using RecyclerView
Please note: If you want to make above simple work in androidX, please create a new project by VS, then copy the code to this new project.
Best Regards,
Leon Lu
If the response is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.