项目中碰到RecyclerView左滑删除的需求,网上找了一圈,感觉都不太合适。大部分都往大而全的方向走,提供的库都比较大,而且都重写了RecyclerView、需要继承特定的adapter等等之类的问题,使用起来稍显麻烦。有些使用简单,但是达不到理想的效果,例如与下拉刷新或者RecyclerView自身存在一些滑动冲突,不能像QQ或者网易邮箱那样一次只能滑开一个item。所以,只能自己写了。
效果图如下:
效果上,具体效果参考了QQ和网易邮箱,比较以后,还是认为QQ的好点,实现部分以QQ效果为参照。支持多点触控,就像QQ一样一次只有一个item被滑开。使用上,不需要重写RecyclerView,不需要继承特定的adapter,总之简简单单,一个类文件一行代码即可。与SwipeRefreshLayout无冲突,测试过没发现滑动方面的问题。
项目地址https://github.com/fornana/swipeitemlayout,使用只需要两步:
1、SwipeItemLayout拷贝到项目里
2、调用addOnItemTouchListener(new SwipeItemLayout.OnSwipeItemTouchListener(this))
至于item布局方面,与DrawerLayout一样的做法。以SwipeItemLayout为root view,然后添加一个group,作为主要内容,再添加第二个group,作为菜单按钮部分。点击事件、长按事件以及view的点击效果等,将item中的children当做一个普通的view来对待就可以了。直接setOnClickListener、setOnLongClickListener,点击效果用drawable设置background即可。