gpt4 book ai didi

android - Recyclerview 拖放触摸

转载 作者:行者123 更新时间:2023-11-29 23:22:11 26 4
gpt4 key购买 nike

我已经使用 ItemTouchHelper 实现了在 recyclerview 中的拖放操作。它工作正常。但它只适用于长按。我需要用 onTouch

来完成
ItemTouchHelper.Callback itemTouchHelperCallback = new ItemTouchHelper.Callback() {
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
Collections.swap(strings, viewHolder.getAdapterPosition(), target.getAdapterPosition());
adapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}

@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
//TODO
}

//defines the enabled move directions in each state (idle, swiping, dragging).
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
return makeFlag(ItemTouchHelper.ACTION_STATE_DRAG,
ItemTouchHelper.DOWN | ItemTouchHelper.UP | ItemTouchHelper.START | ItemTouchHelper.END);
}
};

这是我使用的代码。请帮助我!!!

最佳答案

  1. 覆盖 ItemTouchHelperisLongPressDragEnabled 并返回 false

    https://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.Callback#isLongPressDragEnabled()

    覆盖乐趣 isLongPressDragEnabled(): Boolean = false

  2. 向 ViewHolder 的实现添加回调并使用它

    buttonToDrag.setOnTouchListener { v, event ->
    listener.onTouch(this, event)
    false
    }
  3. 在 Activity 或 fragment 中,使用startDrag

    private lateinit var itemTouchHelper: ItemTouchHelper

    override fun onTouch(viewHolder: RecyclerView.ViewHolder, event: MotionEvent) {
    if (event.actionMasked == MotionEvent.ACTION_DOWN) {
    itemTouchHelper.startDrag(viewHolder)
    }
    }

我在 https://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper#startdrag 的文档中找到了实现

我亲自尝试过,效果非常好。

关于android - Recyclerview 拖放触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54140369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com