从这篇文章主要梳理以下几点: 优雅的实现:item 点击事件 & item 长点击事件 RecyclerView 添加 divider 的标准姿势 RecyclerView 实现 item 的拖曳排序和滑动删除.../html/227/201705/2650239745/1.html RecyclerView 实现 item 的拖曳排序和滑动删除 下面就主要为大家梳理一下拖曳排序和滑动删除的实现,具体实现效果看文章首部效果图...(ItemTouchHelper 的使用并不仅仅局限于 RecyclerView 的滑动删除,你同意可以用在其他需要拖曳滑动的地方。...() 用于设置是否处理拖拽事件和滑动事件,以及拖拽和滑动操作的方向,有以下两种情况: 如果是列表类型的 RecyclerView,拖拽只有 UP、DOWN 两个方向 如果是网格类型的则有 UP、DOWN...滑动删除 如何实现滑动删除呢?我们只需要实现第三个方法 onSwipe() 就行了。
相信大家对于RecyclerView 都已经不再陌生,我们都知道RecyclerView等可滑动控件默认的是会有滚动条以及滑动到边缘时的阴影(光晕)效果的,那么怎样去掉这两个默认属性呢,在这里简单的记录一下...通过java代码设置 RecyclerView.setHorizontalScrollBarEnabled(boolean horizontalScrollBarEnabled); RecyclerView.setVerticalScrollBarEnabled...(boolean verticalScrollBarEnabled); 设置为true时有相应的滚动条,为false时无相应的滚动条 滚动到边缘的光晕效果 1、通过xml文件设置...,那么滑到边界后继续滑动会出现弧形光晕;如果recycleview里面的内容不可以滑动,那么滑到边界后继续滑动不会出现弧形光晕 2、通过java代码设置 a.RecyclerView.setOverScrollMode...同时去掉滚动条和默认的光晕效果的完整xml代码为: RecyclerView android:overScrollMode="never"
点击添加、左滑删除、长按移动交换 RecyclerView的item.gif 1、Item 操作的接口 /** * 作者:张风捷特烈 * 时间:2018/9/17 0017:14:18... * 邮箱:1981462002@qq.com * 说明:Item 操作的接口 */ public interface ItemChangeAdapter {...* @param from 起点 * @param to 终点 */ void onItemMove(int from, int to); /** * 删除条目...| ItemTouchHelper.DOWN; //可向左滑动 int swipeFlags = ItemTouchHelper.LEFT; return...viewHolder, int direction) { //滑动时 mAdapter.onItemDelete(viewHolder.getAdapterPosition
日志.png 红框1是 RecyclerView 向下滑动操作的日志,第三行5个卡位的显示都是重新创建的 ViewHolder ;红框2是再次向上滑动时的日志,第一行5个卡位的重新显示用的 ViewHolder...明明5个卡位都是复用的。 在上面的操作基础上,我们继续往下操作: ?...先向下再向下.png 在第二个问题操作的基础上,目前已经创建了15个 ViewHolder,此时显示的是第1、2行的卡位,那么继续向下滑动两次,这个过程的日志如下: ?...日志.png 红框1是第二个问题操作的日志,在这里截出来只是为了显示接下去的日志是在上面的基础上继续操作的; 红框2就是第一次向下滑时的日志,对比问题2的日志,这次第三行的5个卡位用的 ViewHolder...一次遥控器按键的操作,不管有没有发生滑动,都会导致 RecyclerView 的重新 onLayout,那要 layout 的话,RecyclerView 会先把所有 children 先 remove
上次分析源码,我们知道,ItemTouchHelper对被选中的ViewHodler进行动画操作都是通过ItemTouchUIUtilImpl这个类,我们想要实现侧滑删除,必定需要对ViewHodler...进行平移操作,ItemTouchHelper.Callback通过onChildDraw方法调用了ItemTouchUIUtilImpl中的方法,所以我们改写onChildDraw方法 @Override...{ MyAdapter.MyViewHolder myViewHolder = (MyAdapter.MyViewHolder) viewHolder; //最大偏移不超过删除布局宽度...item.png 其中删除和取消的布局在下层,好了,我们来看下效果 ?...recyclerview.gif 我们还需要解决的问题是上下滑动或者选中其他ViewHodler时的时候,把ViewHodler复原 在select方法中,记录上一个ViewHodler /**
效果很简单,类似于微信扣扣删除聊天栏的效果,想左滑动,出现删除按钮,点击即可删除。...getApp() Page({ data: { msgList:[], height:0, scrollY:true }, swipeCheckX:35, //激活检测滑动的阈值...:0, //0 未显示菜单 1显示菜单 touchStartState:0, // 开始触摸时的状态 0 未显示菜单 1 显示菜单 swipeDirection:0, //是否触发水平滑动 0:...ontouchmove: function(e) { if (this.swipeCheckState === 0) { return; } //当开始触摸时有菜单显示时,不处理滑动操作...,由scroll-view处理滑动操作 if (this.swipeDirection === 2) { return; } //未触发滑动方向 if (this.swipeDirection
4、滑动速度判定设置 5、设置动画时间 6、设置侧滑删除触发操作 7、RecyclerView.Adapter 适配器中的删除操作 三、完整代码实现 1、主界面 2、ItemTouchHelper.Callback...{ /** * 是否启用滑动操作 * @return 是否启用 true 启用, false 不启用 */ @Override public boolean...因此在该案例中 , 滑动幅度在水平方向上超过 0.5 倍的条目组件宽度 , 侧滑删除才能生效 ; 下面的操作中 , 滑动在水平方向上没有超过组件宽度的 0.5 倍 , 滑动删除不生效 ; 下面的操作中..."触发侧滑删除条目"); // 滑动指定的距离, 达到一定幅度后, 就会触发该方法回调 // 这里做的是滑动删除功能, 直接删除滑动项 // 该方法中删除指定条目...适配器中的删除操作 删除数据列表中的元素 , 并调用 notifyItemRemoved 触发删除动画 ; public class Adapter extends RecyclerView.Adapter
| ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定...getMoveThreshold 方法 , 设置用户的拖动距离 , 组件在宽度 / 高度 上移动超过该比例 , 就认为拖动触发, 执行拖动相关操作 ; 设置的是比例值, 返回值为 0.9 , 就意味着滑动宽度...(), target.getAdapterPosition()); return true; } } 5、RecyclerView.Adapter 适配器中的交换排序操作 删除数据列表中的元素...*/ /** * 是否启用滑动操作 * @return 是否启用 true 启用, false 不启用 */ @Override public...// 这里做的是滑动删除功能, 直接删除滑动项 // 该方法中删除指定条目, 并刷新界面 mAdapter.deleteItem(viewHolder.getAdapterPosition
当View被滑动删除的时候 onSelectedChanged 当item被拖拽或侧滑时触发 03.简单实现思路 几个方法中代码思路 要想达到上面功能需求,在...getMovementFlags方法中,当用户拖拽或者滑动Item的时候需要我们告诉系统滑动或者拖拽的方向,那我们知道支持拖拽和滑动删除的无非就是LinearLayoutManager和GridLayoutManager...在onMove方法中处理拖拽的回调逻辑,那么什么时候被调用?当Item被拖拽排序移动到另一个Item的位置的时候被调用。在onSwiped方法当Item被滑动删除到不见中处理被删除后的逻辑。...; } } public interface OnItemTouchCallbackListener { /** * 当某个Item被滑动删除的时候...横向滑动到底后不滑动ViewPager 05.RecyclerView嵌套RecyclerView的滑动冲突问题 06.RecyclerView使用Glide加载图片导致图片错乱问题解决 24.ScrollView
Splay Tree的插入操作,搜索操作,和删除操作都实现了,那么就能够使用来解题了。 指针的删除操作的处理还是那么难的,非常多坎须要避开....同一个坎还是坑了我好多次,就是指针传递的问题,什么时候须要改动指针本身的值,就必须返回指针或者传递指针的指针,或者传递指针的的实參。...这里的删除操作就是须要改变传递到函数的指针本身的,所以我这里使用了返回指针操作。 还有删除树的问题,之前的代码没做删除操作,所以没问题,如今须要逐个节点删除,所以要小心不能把整个树都删除了。...至此, splay 树的功能差点儿相同完好了。 代码中凝视标明了几个坑都被我碰到了。...,不能这么删除,要逐个节点删除 if (left) delete left, left = NULL; if (right) delete right, right = NULL; }*
删除用户 db.removeUser("username") 2.删除当前数据库 db.dropDataBase() 3.删除集合 db.collectionName.drop() 4.删除集合内指定文档
RecyclerView有条目插入、删除时性能提升更明显。...在 25.1 版本中,预取操作被分为单独的创建/绑定操作,比对整组条目操作更容易被纳入 UI 线程的空隙中。...但第一种情况,RecyclerView内部做了回收工作,设不设置影响不大,设置此属性作用主要针对第二种情况。...的动画(删除、新增、位移、change动画),其次性能较低,它不管数据是否一样都整个刷新了一遍整个RecyclerView 。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
mViewCacheExtension(自定义缓存),不直接使用,需要用户自定义实现,默认不实现。...所以完整缓存流程是: 保存缓存流程: 插入或是删除itemView时,先把屏幕内的ViewHolder保存至AttachedScrap中 滑动屏幕的时候,先消失的itemview会保存到CacheView...bindViewHolder方法是在UI线程进行的,此方法不能耗时操作,不然将会影响滑动流畅性。比如进行日期的格式化。...这样就减少了创建VIewholder的开销。 在RecyclerView的元素比较高,一屏只能显示一个元素的时候,第一次滑动到第二个元素会卡顿。...state) { return size; } }; 设置RecyclerView.addOnScrollListener();来在滑动过程中停止加载的操作。
image.png 3.RecyclerView之实现滑动删除拖拽排序(首个可以固定) 3.1实现RecyclerView的滑动删除拖拽排序 滑动删除和拖拽必须用到ItemTouchHelper ,我们看它如何使用...image.png onMove()方法中的操作,注释都很明了,看不懂转行吧 ?...image.png 这样我们就实现了滑动删除和拖拽移动功能,但别高兴太早,这代码仍然存在问题,你正常来讲网格布局应该不具备滑动删除才对,这怎么解决呢?...通过有参构造来设置一个变量,在重写一个isItemViewSwipeEnabled()返回该boolean类型的值控制是否具备滑动删除即可。如图: ? image.png ?...image.png 这样就是实现线性布局管理器和网格布局管理器区分对待,即:线性布局管理器拥有滑动删除和拖拽而网格布局管理器只拥有拖拽功能。
1.1 JDBC的CRUD操作之PreparedStatement的删除操作 1.1.1 删除操作的代码实现 @Test /** * 删除操作 */ public void demo3(){...pstmt.setInt(1, 4); // 执行SQL: int num = pstmt.executeUpdate(); if(num > 0){ System.out.println("删除成功
容易实现添加item、删除item的动画效果。 容易实现拖拽、侧滑删除等功能。 RecyclerView是一个插件式的实现,对各个功能进行解耦,从而扩展性比较好。...QuickAdapter的实现如下: 其中: getLayoutId(int viewType)是根据viewType返回布局ID。 convert()做具体的bind操作。...,因为我们完全可以把点击事件的实现写在Adapter的onBindViewHolder()中,不暴露出来。...那么如何在不破坏原有Adapter实现的情况下完成呢? 这里引入装饰器(Decorator)设计模式,该设计模式通过组合的方式,在不破话原有类代码的情况下,对原有类的功能进行扩展。...具体实现如下: 拖拽、侧滑删除 Android提供了ItemTouchHelper类,使得RecyclerView能够轻易地实现滑动和拖拽,此处我们要实现上下拖拽和侧滑删除。
以下是RecyclerView结合ItemTouchHelper实现的列表和网格布局的拖拽效果。...主要就要使用到ItemTouchHelper ,ItemTouchHelper 是support-v7包中加入的一个帮助开发人员处理拖拽和滑动的实现类,它能够让你非常容易实现侧滑删除、拖拽的功能。...用于设置是否处理拖拽事件和滑动事件,以及拖拽和滑动操作的方向,比如如果是列表类型的RecyclerView,拖拽只有UP、DOWN两个方向,而如果是网格类型的则有UP、DOWN、LEFT、RIGHT四个方向...,我们把swipeFlags 都设置为0,表示不处理滑动操作。...,我们在滑动item的时候就会回调onSwiped的方法,我们不处理这个事件,空着就行了。
| ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定...动作不拦截 , 取消操作很少遇到 , 因此 , 拦截机制中 , 只负责拦截手指按下 和 抬起 操作 , 在 ItemTouchHelper 的业务逻辑中 , 不需要处理移动事件 ; 2、处理按下事件 当检测到...CANCEL 三种动作 , MOVE 动作不拦截 // 取消操作很少遇到 // 因此 , 拦截机制中 , 只负责拦截手指按下 和 抬起 操作...= ACTIVE_POINTER_ID_NONE) { // 该分支表示滑动操作完成的分支 // ACTIVE_POINTER_ID_NONE 表示是否完成了滑动...= ACTIVE_POINTER_ID_NONE) { // 该分支表示滑动操作完成的分支 // ACTIVE_POINTER_ID_NONE 表示是否完成了滑动
ViewPool ViewPool 允许你维护一个 ViewHolder 的缓存池,让你的 RecyclerView 在需要“快速翻页”,或是动态更新内容的时候,能够快速的完成这些操作。...当 ViewPool 里的缓存满了之后,多余的会被回收删除掉。...,避免滑动卡顿现象,并且优化 RecyclerView 的缓存机制。...控制 RecyclerView 的滑动速度 RecyclerView 的滑动速度可能会影响它的性能和响应性。...通过设置 RecyclerView 的 ItemAnimator,可以在 RecyclerView 的添加删除动作时显示动效,让用户更好的体验到Item之间变化的过程。
| ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定...| 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper 实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 | 拖动距离判定 | 设置拖动触发操作..., 主要针对 RecyclerView 的上下左右拖动事件 进行处理 ; 如 : 侧滑删除 功能 , 条目位置拖动交换 功能 , 就可以使用 ItemTouchHandler 实现 ; 如果 RecyclerView...方法 , 传入想要添加上下左右拖动事件的 RecyclerView 对象 , 即可为该 RecyclerView 添加拖动事件 ; 添加后 , 该 RecyclerView 自动可以进行上下左右拖动操作..., 动作有两种 , 一种是滑动 , 如左右侧滑 ; 一种是拖动 , 长按后激活拖动操作 , 可用于拖动交换位置操作 ; 拖动 / 滑动 标志位可以使用 ItemTouchHelper.UP | ItemTouchHelper.DOWN
领取专属 10元无门槛券
手把手带您无忧上云