使用高级的RecyclerView实现侧滑菜单删除功能,A

2019-10-03 14:58 来源:未知

选取此前,先简要介绍一下那些SwipeRecyclerView,那是严大(严振杰)基于RecyclerView的进展改变和包裹的高端RecyclerView,其能够达成像QQ聊天分界面的侧滑删除菜单,和一部分尖端的遵从,小编这里也就不一一列举出来了

率先步随意好内需的recyclerview

  • 首先步就是成立好recyclerview,然后fvb
  • 其次部正是开端化数据,方便测量检验就不管弄点吗,同一时候创造三个子view的视图,一张图纸和一行文字就能够
  • 创建好ViewHolder和相应的Adapter,然后设置好recyclerview的LayoutManager,初阶化adapter,绑定adapter,ok

图片 1

第二步先河做效果

  • 先是需求四个ItemTouchHelper.Callback,所以大家温馨来创制八个
    (ItemTouchHelper.Callback是大家要求选拔的ItemTouchHelper的回调接口),先达成安装拖拽或侧滑的可行性的章程
    <p><code>
    public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
    /** 这里本人只思念了LinearLayoutManager的时候,就算说 * 需求利用比方GridLayoutManager等的时候,须要开展判定 / /这里安装拖拽的样子为前后,当然在网格布局里也能够安装内外左右无论是/
    final int drapFlag = ItemTouchHelper.UP | ItemTouchHelper.DOWN; /此地设置侧滑方向为左右,这里有个地方供给留意,当设置为0的时候,表示不支持拖拽 * 或许侧滑 */
    final int swipFlag = ItemTouchHelper.RIGHT|ItemTouchHelper.LEFT; /
    把方向参数设置进去/
    return makeMovementFlags(drapFlag,swipFlag);
    }</code></p>
  • 下一场我们须求弄多个接口出来,自定义八个接口,使我们的自定义recyclerview的adapter实现它
    <p><code>
    public interface OnMDListener {
    boolean onItemMove(int fromPosition,int toPosition);
    void onItemSwip(int position);
    }
    class VHAdapter extends RecyclerView.Adapter<VH> implements OnMDListener
    </code></p>
  • 并且把现实的方法完成写出来
    <p><code>
    @Overridepublic
    boolean onItemMove(int fromPosition, int toPosition) { Collections.swap(nameArr,fromPosition,toPosition); notifyItemMoved(fromPosition,toPosition);
    return true;
    }
    @Override
    public void onItemSwip(int position) {
    nameArr.remove(position);
    notifyItemRemoved(position);
    }
    </code></p>
  • 然后把大家自定义的那个接口传进大家的Callback中来,在相应的onMove和onSwip方法中去回调大家的自定义接口中的onItemMove和onItemSwip方法,整个的CallBack的代码如下
    <p><code>
    public class OwnTouchHelper extends ItemTouchHelper.Callback {
    private OnMDListener listener;
    public OwnTouchHelper(OnMDListener listener) {
    this.listener = listener;
    }
    /** * 那些点子是用来设置大家拖动和侧滑的大势的 * @param recyclerView * @param viewHolder * @return /
    @Override
    public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
    /
    * 这里自个儿只思索了LinearLayoutManager的时候,假使说 * 须求运用比如GridLayoutManager等的时候,必要进行推断 /
    /这里安装拖拽的趋向为前后,当然在网格布局里也足以安装内外左右随便
    /
    final int drapFlag = ItemTouchHelper.UP | ItemTouchHelper.DOWN; /这里设置侧滑方向为左右,这里有个地点需求小心,当设置为0的时候,表示不援救拖拽 * 也许侧滑 */
    final int swipFlag = ItemTouchHelper.RIGHT|ItemTouchHelper.LEFT; /
    把矛头参数设置进去/
    return makeMovementFlags(drapFlag,swipFlag);
    }
    / * 当大家拖动item的时候,就可以回调那些办法 * @param recyclerView * @param viewHolder * @param target * @return /
    @Override
    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
    listener.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());
    return true; }
    /
    * * 当我们侧滑二个item的时候就能够回调这么些措施 * @param viewHolder * @param direction */
    @Override
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
    listener.onItemSwip(viewHolder.getAdapterPosition());
    }
    }
    </code></p>
  • 到那边差不离就已经能一鼓作气拖拽和侧滑删除的效率了,在早先化adapter的地方去开展绑定,首先成立一个ItemTouchHelper然后为其设置一个CallBack,然后使用ItemTouchHelper来绑定到大家的recyclerview
    <p><code>
    private void initRec() {
    adapter = new VHAdapter();
    rec.setAdapter(adapter);
    rec.setHasFixedSize(true);
    manager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); rec.setLayoutManager(manager);
    ItemTouchHelper.Callback callback = new OwnTouchHelper(adapter); ItemTouchHelper helper = new ItemTouchHelper(callback);
    这一句很珍视:
    helper.attachToRecyclerView(rec);}
    </code></p>

 

到此地,我们的recyclerview就足以兑现拖拽移动和侧滑删除的功效了,计算一下步骤:

  1. 开创八个ItemTouchHelper.Callback,在CallBack的getMovementFlags方法中安装好拖动和侧滑的大势,何况经过makeMovementFlags方法设置进去
  2. 自定义二个接口,使recyclerview的adapter完成它,并把相应的措施的现实性完结写好
  3. 为自定义的ItemTouchHelper.Callback写一个构造函数,在构造函数少校自定义的recyclerview的adapter设置进去,因为adapter已经达成了我们自定义的接口,也正是说adapter内的具体贯彻情势也得以在CallBack中张开回调
  4. 创造一个ItemTouchHelper,并为那一个helper设置好二个新创造出来的CallBack对象,CallBack对象中装置好贯彻了我们自定义接口的Adapter,
    然后经过ItemTouchHelper对象的attachToReyclerView方法,把recyclerview设置进去,就此产生

想要驾驭更加多的同窗,请看这一篇,作者写的http://blog.csdn.net/yanzhenjie1003/article/details/52115566

每一天都要保险好心气,即便说做得十分的少,然而多多少少也要去做一做嘛,大器总是晚成的,嘿嘿

swiperecyclerview的Github官网:

 

TAG标签:
版权声明:本文由金沙澳门官网4166发布于文物考古,转载请注明出处:使用高级的RecyclerView实现侧滑菜单删除功能,A