首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动RecyclerView ItemTouchHelper操作拖动

启动RecyclerView ItemTouchHelper操作拖动
EN

Stack Overflow用户
提问于 2020-08-24 13:21:31
回答 2查看 423关注 0票数 1

我有带有附加RecyclerViewItemTouchHelper,我用

代码语言:javascript
复制
class ItemTouchHelperCallback(
        private val adapter: ItemTouchHelperAdapter
) : ItemTouchHelper.Callback() {
    override fun isLongPressDragEnabled(): Boolean {
        return true
    }
    ...
}

我将调用振动的每一个拖动事件启动。在精确的拖曳启动时刻。

为此,我在ViewHolder中设置了touch listener。然后我试着为第一次ACTION_MOVE事件调用振动。不幸的是,它发生的速度比项目拖拽是可能的。我希望振动和可能性移动项目发生在同一时间。为了给用户准确的触觉反馈,他可以从现在起拖动和移动物品。

我期望ItemTouchHelperItemTouchHelper.Callback公开适当的API。但我注意到,在ItemTouchHelper内部,在预期的时刻有值ACTION_STATE_DRAGmActionState (在onLongPress()中,所以这两个类应该知道何时开始拖动!)很遗憾他们没有公开分享他们的知识。

而且,我注意到了非常similar topic about action drag ended,但我无法找到解决方案的action drag started那里。

EN

回答 2

Stack Overflow用户

发布于 2021-01-27 10:02:51

您需要将此方法添加到回调中。

代码语言:javascript
复制
  override fun onSelectedChanged(viewHolder: ViewHolder?, actionState: Int) {
      super.onSelectedChanged(viewHolder, actionState)

        if (actionState == ACTION_STATE_DRAG) {
            //  your code here 
        }
  }

这对我来说很好

票数 4
EN

Stack Overflow用户

发布于 2020-08-24 13:21:31

我最终找到了黑客解决方案,这是ItemTouchHelper.Callback()的一部分。getMovementFlags几乎在同一时刻被调用,就像将mActionState更改为ACTION_STATE_DRAG一样。内部onLongPress() of ItemTouchHelper` `。

打了两次电话,所以小心点-)

compileSdkVersion = 28上测试

不过,我想找到更好的解决办法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63561911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档