zoukankan      html  css  js  c++  java
  • RecyclerView 踩坑

    一、RecyclerView设置拖动后怎么监听拖动的开始和结束

     ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
                @Override
                public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
                    //首先回调的方法 返回int表示是否监听该方向
                    int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;//拖拽
    //                int swipeFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;//侧滑删除
                    return makeMovementFlags(dragFlags, -1);
                }
                @Override
                public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
                    //滑动事件
                    Collections.swap(mList, viewHolder.getAdapterPosition(), target.getAdapterPosition());
                    mAdapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
                    return true;
                }
    
                @Override
                public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
    
                    if (viewHolder == null) {
    //                   onMoveEnd(); //拖动结束
                        ToastUtil.showShort(mContext,"拖动结束");
                        mAdapter.notifyDataSetChanged();
                    } else {
    //                   onMoveStart();  //拖动开始
                    }
                    super.onSelectedChanged(viewHolder, actionState);
                }
    
                @Override
                public void onSwiped(final RecyclerView.ViewHolder viewHolder, int direction) {
                    //侧滑事件
    //                onItemDelete(viewHolder.itemView, viewHolder.getAdapterPosition());
    //                mCAdapter.notifyItemRemoved(viewHolder.getAdapterPosition());
                }
                @Override
                public boolean isLongPressDragEnabled() {
                    //是否可拖拽
                    return true;
                }
                @Override
                public boolean isItemViewSwipeEnabled() {
                    //是否可以删除
                    return false;
                }
            });
            helper.attachToRecyclerView(mRvEdtSort); //设置给RecyleView

    重写 onSelectedChanged 方法,并且判断是否拖动的开始和结束。

    二、RecyclerView加载更多用notifyDataSetChanged()刷新图片闪烁

  • 相关阅读:
    Leetcode中级算法-二分查找01
    二叉查找树01(c++代码实现)
    Leetcode中级算法-动态规划03(最长上升子序列)
    Leetcode中级算法-动态规划02
    Leetcode中级算法-动态规划01
    Leetcode中级算法-全排列
    使用git获取Linux内核
    Kali 使用proxychains接管全局代理
    kali2020.1安装问题解决【选择并安装软件】
    unzip最常用使用方法
  • 原文地址:https://www.cnblogs.com/woaixingxing/p/6840860.html
Copyright © 2011-2022 走看看