繁体   English   中英

RecyclerView ItemTouchHelper 动作拖动开始

[英]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事件调用振动。 不幸的是,它发生得比项目拖动更快。 我希望振动和移动物品的可能性同时发生。 为了给用户准确的触觉反馈,从现在开始他可以拖动和移动项目。

我希望ItemTouchHelperItemTouchHelper.Callback公开适当的 API。 它没有。 但我注意到,里面ItemTouchHelpermActionState与价值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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM