如何知道用户何时完成移动 RecyclerView 项目?

问题描述

我需要在用户掉落物品时执行一些操作。 itemtouchhelper 似乎只有 onMove 和 onMoved 调用,无论用户是否实际完成移动项目,都会发生这种情况。 我如何知道用户何时完成移动项目?也就是说,他们松开了手指,将项目放回了 recyclerView?

解决方法

您可以覆盖 ItemTouchHelper.Callback 类实现的 onSelectedChanged() 回调,并使用可以是 (actionState,{{1 }},& ACTION_STATE_DRAG).

ACTION_STATE_SWIPE 是您要查找的内容,当滑动/拖动操作结束并且用户将手指离开屏幕时会触发它

您可以使用布尔值来确定是滑动还是拖动,如下所示。

ACTION_STATE_IDLE

然后在你的 RecyclerView 上使用它

ACTION_STATE_IDLE

预览

,

简单。只需覆盖onClearView()

@Override
public void clearView(@NonNull RecyclerView recyclerView,@NonNull RecyclerView.ViewHolder viewHolder) {    //called when you dropped the item
    super.clearView(recyclerView,viewHolder);

    Toast.makeText(recyclerView.getContext(),"Item dropped on position: " + viewHolder.getAdapterPosition(),Toast.LENGTH_SHORT).show();
}