[英]RecyclerView ItemTouchHelper Action Drag Started
我有RecyclerView
附带的ItemTouchHelper
,我用它构建
class ItemTouchHelperCallback(
private val adapter: ItemTouchHelperAdapter
) : ItemTouchHelper.Callback() {
override fun isLongPressDragEnabled(): Boolean {
return true
}
...
}
我将在每次拖动事件开始时调用振动。 在确切的拖动开始时刻。
为此,在ViewHolder
我设置了touch listener
。 然后我尝试为第一个ACTION_MOVE
事件调用振动。 不幸的是,它发生得比项目拖动更快。 我希望振动和移动物品的可能性同时发生。 为了给用户准确的触觉反馈,从现在开始他可以拖动和移动项目。
我希望ItemTouchHelper
或ItemTouchHelper.Callback
公开适当的 API。 它没有。 但我注意到,里面ItemTouchHelper
有mActionState
与价值ACTION_STATE_DRAG
在预期的时刻(内onLongPress()
因此,那些2班应该知道什么时候开始拖!这是他们没有公开分享他们的知识可惜。
另外,我注意到关于动作拖动结束的非常相似的主题,但我找不到action drag started
那里action drag started
解决方案。
您需要将此方法添加到您的回调中
override fun onSelectedChanged(viewHolder: ViewHolder?, actionState: Int) {
super.onSelectedChanged(viewHolder, actionState)
if (actionState == ACTION_STATE_DRAG) {
// your code here
}
}
这对我很有效
我最终找到了 hacky 解决方案,它是ItemTouchHelper.Callback()
一部分。 getMovementFlags
几乎在同一时刻被调用,就像将mActionState
更改为ACTION_STATE_DRAG
。 在onLongPress() of
。
打了两次电话,所以要小心;-)
在compileSdkVersion = 28
上测试
不过,我希望看到更好的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.