RecyclerView的出现不可否认是开发者们的福利,它自带的ItemTouchHelper能非常轻松的完成侧滑删除、长按拖拽,但是难免有的开发者不会使。再加上实际的开发中侧滑删除往往会用侧滑菜单来实现,这就难为了有些开发者了。SwipeRecyclerView的出现就完美的解决了这些问题,侧滑删除、长按拖拽Item仅需要一句话…

  1. 需要说明的是,本库没有对RecyclerView做大的修改,只是ItemView的封装。看起来是对RecyclerView的修改,其实仅仅是为RecyclerView添加了使用的方法API而已。
  2. 应开发者们的要求,本库已经更新了三个版本了,会一直维护下去,根据小伙伴的要求,以后也会添加一些其它功能。

因为SwipeRecyclerView发布已经一个月了,现在有了几个不小的更新,都是刚需,所以再次分享出来给大家,希望大家能多多支持。

SwipeRecyclerView将完美解决这些问题:

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

SwipeRecyclerView的源码托管在Github:github.com/yanzhenjie/…,欢迎Star。

如果你是手机看本文,记不住项目地址不要紧,记住我的个人主页就好,我的所有项目在我网站都有。

我的域名是:yanzhenjie.com,也就是我名字严振杰.com,我相信你肯定记住了,没记住的再看一眼啦。

要是还没记住,更简单的是百度/Google搜索我名字:严振杰,排名第一的就是我。

效果图

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

侧滑菜单

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

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

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

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

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

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

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

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

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

引用方法

  • Eclipse 请自行下载源码。
  • AndroidStudio使用Gradle构建添加依赖(推荐)
    compile 'com.yanzhenjie:recyclerview-swipe:1.0.2'复制代码

Or Maven:

<dependency><groupId>com.yanzhenjie</groupId><artifactId>recyclerview-swipe</artifactId><version>1.0.2</version><type>pom</type>
</dependency>复制代码

使用介绍

这里列出关键实现,具体请参考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.SwipeMenuRecyclerViewandroid: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() {@Overridepublic 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> {@Overridepublic int getItemCount() {return 0;}@Overridepublic View onCreateContentView(ViewGroup parent, int viewType) {return null;}@Overridepublic ViewHolder onCompatCreateViewHolder(View realContentView, int viewType) {return null;}@Overridepublic void onBindViewHolder(MenuAdapter.DefaultViewHolder holder, int position) {}
    }复制代码

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

(有图)仿QQ侧滑菜单:RecyclerView侧滑菜单,长按拖拽,滑动删除相关推荐

  1. Android开发之RecyclerView的交互动画(实现拖拽和删除)

    做RecyclerView做相关的动画效果的时候,用的最多的是v7包下的ItemTouchHelper类,这个类很强大,如有兴趣的童鞋可以自行翻看源码,接下来我带领大家实现RecyclerView相关 ...

  2. android.support.v7 fragme,打造最强RecyclerView侧滑菜单,长按拖拽Item,滑动删除Item

    前几天写了一片关于RecyclerView滑动删除Item,RecyclerView长按拖拽Item的博客,本来很简单一个使用,阅读量还挺高的,原博客传送门. 今天介绍一个RecyclerView I ...

  3. Android实现RecyclerView侧滑删除和长按拖拽-ItemTouchHelper

    RecyclerView这个被誉为ListView和GirdView的替代品,它的用法在之前的一篇博文中就已经讲过了,今天我们就来实现RecyclerView的侧滑删除和长按拖拽功能,实现这两个功能我 ...

  4. 仿QQ多级折叠、展开菜单,三级下拉导航

    仿QQ多级折叠.展开菜单,三级下拉导航 仿QQ面板风格的多级折叠.展开菜单,三级下拉导航,JavaScript+CSS共同结晶的结果,推荐给大家,点击"运行"可查看效果. http ...

  5. 安卓开发仿微信图片拖拽_仿微信朋友圈发表图片拖拽和删除功能

    原标题:仿微信朋友圈发表图片拖拽和删除功能 中国联通在香港公布了上市公司2017年中期业绩.2017年上半年,公司主要业绩指标持续向好,收入稳步回升,服务收入达到人民币1,241.1亿元,同比增长3. ...

  6. 安卓开发仿微信图片拖拽_Android 仿微信朋友圈发表图片拖拽和删除功能

    朋友圈实现原理 我们使用 Android Device Monitor 来分析朋友圈发布图片的界面实现原理.如果需要分析其他应用的界面实现也是采用这种方法哦. 打开 Android Device Mo ...

  7. Android 仿微信朋友圈发表图片拖拽和删除功能

    朋友圈实现原理 我们使用 Android Device Monitor 来分析朋友圈发布图片的界面实现原理.如果需要分析其他应用的界面实现也是采用这种方法哦. 打开 Android Device Mo ...

  8. RecyclerView长按拖拽排序 ,缩短长按响应时间,长按0.1秒就可以开始拖动

    RecyclerView长按拖拽排序 ,缩短长按响应时间,长按0.1秒就可以开始拖动 度娘搜索RecyclerView长按拖拽排序,很多文章讲解,没找到缩短长按响应时间的,所以自己研究了一下 先看效果 ...

  9. iOS开发——仿微信图片浏览交互的实现(向下拖拽图片退出图片浏览器)

    点击上方"iOS开发",选择"置顶公众号" 关键时刻,第一时间送达! DEMO的github地址:https://github.com/YYProgrammer ...

  10. Android 可长按拖拽的RecyclerView

    近期项目遇到需要拖拽的RecyclerView来实现需求,首先考虑了ItemTouchHelper 这个类,但是后续使用发现无法把item视图拖出RecyclerView的视图范围,于是打算自定义Re ...

最新文章

  1. php学习,一个简单的Calendar(2) 一个简单的活动页面
  2. 做一个略调皮的个人主页--相册与随笔篇
  3. 中国水产饲料市场发展深度调研及十四五前景预测报告2022年版
  4. yunyang tensorflow-yolov3 启动evaluate.py报错:Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED原因
  5. android 动态移动xy,android – 如何使用AChartEngine动态线图和X轴自动平移(滚动)?...
  6. Premature Optimization
  7. 手机开启开发模式 hbuilder无法搜索到_MIUI 12这个惊艳功能,其他手机也能一键开启...
  8. 在WEB程序中隐藏后门
  9. 买书动态规划java_《编程之美》买书问题——动态规划
  10. 探索webpack热更新对代码打包结果的影响(二)
  11. LeetCode算法题-House Robber(Java实现)
  12. 中移动IM+MM 抢滩移动互联网
  13. 数学建模MATLAB难不难,如何才能在数学建模竞赛中取得好成绩
  14. 知道君推荐给大家一些写论文、搞科研、读大学必备的30款软件。
  15. Python基础重点复习(5)
  16. 笑话理解之Mature
  17. 给元素设置鼠标移入后变为手型的属性
  18. 实验三:基于A*算法的迷宫
  19. 苹果cmsV10仿优酷模板,最新自适应苹果cms模板
  20. 如何寻找适合的投稿SCI期刊

热门文章

  1. PHP动态属性和stdclass
  2. Linux输入子系统学习笔记
  3. Android 多媒体开发学习之创建图片的副本
  4. linux内核C -- 第05课:零长度数组
  5. expect移植到powerPC平台的过程
  6. qt写的在ok6410上的密码锁
  7. 【数据获取】建筑轮廓数据的N种获取方法
  8. 解压tar.gz文件与tar.bz2文件
  9. 漫谈Clustering:高斯混合模型(GMM)
  10. 树的重心详解(C++)