【问题标题】:ItemTouchHelper with SpannedGridLayoutManager - RecyclerView issues带有 SpannedGridLayoutManager 的 ItemTouchHelper - RecyclerView 问题
【发布时间】:2017-02-11 14:31:54
【问题描述】:

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

有人已经解决了吗?

【问题讨论】:

    标签: android android-recyclerview gridlayoutmanager itemtouchhelper


    【解决方案1】:

    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;
        }
     }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 2019-09-27
      • 1970-01-01
      • 2016-05-22
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多