关闭

RecyclerView侧滑菜单,滑动删除,长按拖拽,下拉刷新上拉加载

标签: 侧滑菜单侧滑删除长按拖拽
92233人阅读 评论(168) 收藏 举报
分类:

版权声明:转载必须注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003

Feature

  1. 以下功能全部支持:竖向ListView、横向ListView、Grid、StaggeredGrid四种形式。
  2. RecyclerView 左右两侧 侧滑菜单。
  3. 菜单横向排布、菜单竖向排布。
  4. RecyclerView长按拖拽Item。
  5. RecyclerView侧滑删除item。
  6. 指定RecyclerView的某一个Item不能滑动删除或长按拖拽。
  7. 某一个Item显示的不同的菜单(类似QQ)。
  8. 用SwipeMenuLayout在任何地方都可以实现你自己的侧滑菜单。
  9. 使用SwipeRecyclerView下拉刷新、自动加载更多。
  10. 可以和ViewPager、DrawerLayout、CardView嵌套使用。

SwipeRecyclerView项目地址:https://github.com/yanzhenjie/SwipeRecyclerView

引用方法

  • Eclipse 请放弃治疗
  • Gradle
compile 'com.yanzhenjie:recyclerview-swipe:1.0.3'

Or Maven:

<dependency>
  <groupId>com.yanzhenjie</groupId>
  <artifactId>recyclerview-swipe</artifactId>
  <version>1.0.3</version>
  <type>pom</type>
</dependency>

效果图

gif有一些失真,且网页加载速度慢,可以[下载demo的apk][3]看效果。

侧滑菜单

  1. 左右两侧都有菜单,主动调出第几个菜单或者手指滑动出现。
  2. 根据ViewType某一个Item显示的不同的菜单(类似QQ)

<两侧侧滑菜单 不同的Item不同的菜单

和ViewPager嵌套 下拉刷新、自动加载更多

  1. 和ViewPager嵌套使用,兼容了滑动冲突。
  2. 可以和任何下拉刷新的框架结合,滑动到底部自动加载更多。

和ViewPager嵌套使用 下拉刷新加载更多

长按拖拽 侧滑菜单结合使用

  1. 一直按住Item进行拖拽排序,支持List、Grid形式。
  2. 长按拖拽并且和侧滑菜单结合使用。

List拖拽排序、菜单 Grid拖拽排序、菜单

直接滑动删除 长按拖拽Item排序

  1. 侧滑直接删除,也可以长按拖拽排序。
  2. 可以指定某个Item不能被侧滑删除、不能被长按拖拽。

侧滑删除 指定某一个不能拖拽、滑动删除

竖型菜单 用自定义布局实现自己的菜单

  1. 给菜单设置排列方向,支持横向、竖向。
  2. 开发者用库中的SwipeMenuLayout开发自己的侧滑菜单。

菜单排列方向 自定义菜单

使用介绍

这里列出关键实现,具体请参考demo,或者加最上面的交流群一起讨论。 更多教程请进入我的博客查看。

启用SwipeReyclerView的长按Item拖拽功能和侧滑删除功能

recyclerView.setLongPressDragEnabled(true);// 开启长按拖拽
recyclerView.setItemViewSwipeEnabled(true);// 开启滑动删除。
recyclerView.setOnItemMoveListener(onItemMoveListener);// 监听拖拽和侧滑删除,更新UI和数据。

添加Item侧滑菜单

侧滑菜单支持自动打开某个Item的菜单,并可以指定是左边还是右边的:

// 打开第一个Item的左侧菜单。
recyclerView.openLeftMenu(0);

// 打开第一个Item的右侧菜单。
recyclerView.openRightMenu(0);
  • 第一步,引用自定义View:SwipeMenuReyclerView:
<com.yanzhenjie.recyclerview.swipe.SwipeMenuRecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />
  • 第二步,设置菜单创建器、菜单点击监听:
SwipeMenuRecyclerView swipeMenuRecyclerView = findViewById(R.id.recycler_view);
// 设置菜单创建器。
swipeMenuRecyclerView.setSwipeMenuCreator(swipeMenuCreator);
// 设置菜单Item点击监听。
swipeMenuRecyclerView.setSwipeMenuItemClickListener(menuItemClickListener);
  • 第三步,菜单创建器创建菜单:
/**
 * 菜单创建器。在Item要创建菜单的时候调用。
 */
private SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() {
    @Override
    public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {

        SwipeMenuItem addItem = new SwipeMenuItem(mContext)
            .setBackgroundDrawable(R.drawable.selector_green)// 点击的背景。
            .setImage(R.mipmap.ic_action_add) // 图标。
            .setWidth(size) // 宽度。
            .setHeight(size); // 高度。
        swipeLeftMenu.addMenuItem(addItem); // 添加一个按钮到左侧菜单。

        SwipeMenuItem deleteItem = new SwipeMenuItem(mContext)
            .setBackgroundDrawable(R.drawable.selector_red)
            .setImage(R.mipmap.ic_action_delete) // 图标。
            .setText("删除") // 文字。
            .setTextColor(Color.WHITE) // 文字颜色。
            .setTextSize(16) // 文字大小。
            .setWidth(size)
            .setHeight(size);
        swipeRightMenu.addMenuItem(deleteItem);// 添加一个按钮到右侧侧菜单。.

        // 上面的菜单哪边不要菜单就不要添加。
    }
};

更多使用方法请参考Demo,或者加最上方的QQ群来交流。

  • 第四步,继承SwipeMenuAdapter,和正常的Adapter一样使用:
public class MenuAdapter extends SwipeMenuAdapter<MenuAdapter.DefaultViewHolder> {

    @Override
    public int getItemCount() {
        return 0;
    }

    @Override
    public View onCreateContentView(ViewGroup parent, int viewType) {
        return null;
    }

    @Override
    public ViewHolder onCompatCreateViewHolder(View realContentView, int viewType) {
        return null;
    }

    @Override
    public void onBindViewHolder(MenuAdapter.DefaultViewHolder holder, int position) {
    }
}

就到这里,更多的细节,请参考Github上的demo和源码,源码demo下载传送门


版权声明:转载必须注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003

84
1
查看评论

Android RecycleView 实现滑动删除按钮

概述 最近刚开始做安卓项目,制作给了一份演示稿要求做一个列表滑动删除按钮的效果,网上很多类似的效果,但多是用ListView,而且一些细节上无法完全符合制作的要求!无奈之下只能自己静下心来写一个。使用了RecyclerView完成。
  • tyzlmjj
  • tyzlmjj
  • 2015-07-25 22:10
  • 23571

RecyclerView 添加左滑动删除 简洁 一个类

设计有了这个需求就开始找,网上的框架太大且不靠谱,很多bug,于是自己就写了个,RecyclerView  嵌套在viewpager的滑动删除,解决了事件冲突。至少我用着没有问题,另外有需要可以修改源码满足,毕竟一个类,看不惯简单的东西嵌套几个类绕。  注意的是触发滑动的条件 我...
  • u010523832
  • u010523832
  • 2016-11-21 17:21
  • 3826

RecyclerView实现条目Item拖拽排序与滑动删除

1. RecyclerView Item拖拽排序::长按RecyclerView的Item或者触摸Item的某个按钮。2. RecyclerView Item滑动删除:RecyclerView Item滑动删除:RecyclerView的Item滑动删除。利用ItemTouchHelper绑定`Re...
  • yanzhenjie1003
  • yanzhenjie1003
  • 2016-07-18 00:32
  • 37286

RecyclerView Item拖拽/滑动删除

  • 2016-07-18 00:33
  • 57KB
  • 下载

RecyclerView进阶:使用ItemTouchHelper实现拖拽和侧滑删除

有时候我们可能需要实现侧滑删除的功能,比如知乎首页的侧滑删除,又或者长按Item进行拖动与其他Item进行位置的交换,但RecyclerView没有提供现成的API供我们操作,所幸SDK提供了ItemTouchHelper这样一个工具类帮助我们快速实现以上功能。不多说别的,我们来介绍一下ItemTo...
  • a553181867
  • a553181867
  • 2017-01-31 15:04
  • 7922

RecyclerView完美实现拖拽,滑动删除,撤销删除

RecyclerView完美实现拖拽,滑动删除,撤销删除 本文所讲的都是使用自带 API 实现,并不借用第三方控件。用于RecyclerView 中实现滑动删除,拖拽排序,以及如何实现删除后撤销操作(类似于知乎中撤销删除操作) - 初始化RecyclerView,绑定Adapter,La...
  • hymanme
  • hymanme
  • 2016-03-19 15:02
  • 1938

RecyclerView仿ios左滑删除的轻量级实现

项目中碰到RecyclerView左滑删除的需求,网上找了一圈,感觉都不太合适。大部分都往大而全的方向走,提供的库都比较大,而且都重写了RecyclerView、需要继承特定的adapter等等之类的问题,使用起来稍显麻烦。有些使用简单,但是达不到理想的效果,例如与下拉刷新或者RecyclerVie...
  • fornana
  • fornana
  • 2017-03-09 20:00
  • 3509

Android View进阶之RecyclerView 实现滑动删除和拖拽功能

前言 从Android 5.0开始,谷歌推出了新的控件RecyclerView,相对于早它之前的ListView,优点多多,功能强大,也给我们的开发着提供了极大的便利,今天自己学习一下RecyclerView轻松实现滑动删除及拖拽的效果,如下图。 ...
  • wangwangli6
  • wangwangli6
  • 2017-03-29 13:25
  • 611

RecyclerView学习(三)----高仿知乎的侧滑删除

偶尔看到知乎首页的侧滑删除,感觉还不错。之前用RecyclerView的ItemTouchHelper类来实现了Item的拖动和删除功能,今天带来的则是纯手工打造的一个侧滑删除。老规矩,先看看效果图:当滑动的距离小于红块的一半,松开手指以后,会自动收缩当前item;当滑动的距离超过一半,松开手指以后...
  • tyk0910
  • tyk0910
  • 2016-06-14 10:27
  • 12206

RecyclerView侧滑删除

转载自:http://blog.csdn.net/tyk0910/article/details/51669205 偶尔看到知乎首页的侧滑删除,感觉还不错。之前用RecyclerView的ItemTouchHelper类来实现了Item的拖动和删除功能,今天带来的则是纯手工打造的一个侧滑删除。...
  • fwt336
  • fwt336
  • 2016-08-22 10:52
  • 837
    个人资料
    • 访问:1644377次
    • 积分:6600
    • 等级:
    • 排名:第4318名
    • 原创:52篇
    • 转载:0篇
    • 译文:1篇
    • 评论:1297条
    我的微信公众号
    欢迎关注我的公众号,不定期为您推送优选博文,生活趣事!
    关注我的微信公众号

    关注我的微博
    友情链接


    我的Github

    QQ交流群 547839514

    博客专栏