当前位置: 移动技术网 > IT编程>移动开发>Android > android RecyclerView侧滑菜单,滑动删除,长按拖拽,下拉刷新上拉加载

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

荷兰朵奶粉最新事件,2014f1英国站,jiam

本文介绍的库中的侧滑效果借鉴自swipemenu,并对sipwmenu的源码做了修改与bug修复,然后才开发出的swiperecyclerview。

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

swiperecyclerview将完美解决这些问题:

  • 以下功能全部支持:竖向listview、横向listview、grid、staggeredgrid四种形式。
  • recyclerview 左右两侧 侧滑菜单。
  • 菜单横向排布、菜单竖向排布。
  • recyclerview长按拖拽item。
  • recyclerview侧滑删除item。
  • 指定recyclerview的某一个item不能滑动删除或长按拖拽。
  • 某一个item显示的不同的菜单(类似qq)。
  • 用swipemenulayout在任何地方都可以实现你自己的侧滑菜单。
  • 使用swiperecyclerview下拉刷新、自动加载更多。
  • 可以和viewpager嵌套使用(兼容滑动冲突)。

引用方法

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>

我在开发swiperecyclerview时引用的recyclerview版本如下:

compile 'com.android.support:recyclerview-v7:23.4.0'

效果图

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

侧滑菜单

  • 左右两侧都有菜单,主动调出第几个菜单或者手指滑动出现。
  • 根据viewtype某一个item显示的不同的菜单(类似qq)

<两侧侧滑菜单

不同的item不同的菜单

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

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

和viewpager嵌套使用 

下拉刷新加载更多

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

  • 一直按住item进行拖拽排序,支持list、grid形式。
  • 长按拖拽并且和侧滑菜单结合使用。

list拖拽排序、菜单 

grid拖拽排序、菜单

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

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

侧滑删除 

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

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

  • 给菜单设置排列方向,支持横向、竖向。
  • 开发者用库中的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。

第四步,继承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) {
 }
}

就到这里,更多的细节,请参考demo和源码,。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网