繁体   English   中英

使用SpannedGridLayoutManager的ItemTouchHelper-RecyclerView问题

[英]ItemTouchHelper with SpannedGridLayoutManager - RecyclerView issues

我在RecyclerView中将ItemTouchHelper与SpannedGridLayoutManager结合使用时遇到问题,当拖动到拖动对象旁边的项目时,拖动会过早结束。 我知道它是小故障的布局管理器,因为它可以与其他布局管理器一起使用而不会出现任何问题。

有人解决了吗?

onSelectedChanged(RecyclerView.ViewHolder,int)回调提供有关当前actionState的信息:-ACTION_STATE_IDLE:-ACTION_STATE_DRAG-ACTION_STATE_SWIPE

因此,您可以跟踪订单是否更改,以及当状态更改为ACTION_STATE_IDLE时,您可以执行所需的操作!

实现这样的回调类。

class CardsTouchHelperCallback extends ItemTouchHelper.Callback {

...
@Override
    public boolean onMove(RecyclerView recyclerView, 
RecyclerView.ViewHolder viewHolder,
                      RecyclerView.ViewHolder target) {

    int fromPosition = viewHolder.getAdapterPosition();
    int toPosition = target.getAdapterPosition();

    dragFrom =  fromPosition;
    dragTo = toPosition;

    mOrderChanged = true;

    return false;
}

@Override
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
    super.onSelectedChanged(viewHolder, actionState);

    if (actionState == ItemTouchHelper.ACTION_STATE_IDLE && mOrderChanged) {
        //doSomething();
        touchHelperAdapter.onItemMove(dragFrom, dragTo);
        mOrderChanged = false;
    }
 }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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