RecyclerView的使用(二)——拖曳移动和滑动删除


1 先获取屏幕的宽度

//声明
private int screenwidth;//oncreate中//获取屏幕宽度WindowManager wm = (WindowManager) MainActivity.this.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);screenwidth =outMetrics.widthPixels;itemMoveAndDelete();

2 使用

//设置item可移动可滑动删除private void itemMoveAndDelete(){// 创建类对象    callback为监听itemTouchHelper=new ItemTouchHelper(new ItemTouchHelper.Callback(){// 重写下面的方法//用于设置拖拽和滑动的方向@Overridepublic int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {// 拖动方向为上或者下int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;// 滑动方向为左或者右    //swipeFlags设置为0的话item不滑动int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;return makeMovementFlags(dragFlags,swipeFlags);}//长摁item拖拽时会回调这个方法@Overridepublic boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {int from=viewHolder.getAdapterPosition();int to=target.getAdapterPosition();// 要实现数据的移除mAdapter.notifyItemMoved(from,to);//更新适配器中item的位置return true;}@Overridepublic void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {//这里处理滑动删除  mAdapter.removeItem(viewHolder.getAdapterPosition());// 将该行的数据从数据库删除出去// 首先获取该position的位置int a =viewHolder.getAdapterPosition();// 然后根据该位置 去获得该位置的name的textViewView view = mLayoutManager.findViewByPosition(a);LinearLayout layout = (LinearLayout)view;TextView status =  layout.findViewById(R.id.text_1);String str = status.getText().toString();// 再调用数据库删除方法去删除这个name的行delete(str);// 也可以对List的数据删除mAdapter.notifyItemRemoved(viewHolder.getAdapterPosition());}//返回true则为所有item都设置可以拖拽 要想约束某些item不能拖曳 则设置为false 并在长按点击事件中设置// itemTouchHelper.startDrag(recyclerview.getChildViewHolder(view));@Overridepublic boolean isLongPressDragEnabled() {return true;}// 以下为拖曳动画效果//当item拖拽开始时调用 并且得到的这个颜色item不会变回去 得在item拖曳结束的方法中改回去@Overridepublic void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {super.onSelectedChanged(viewHolder, actionState);if(actionState==ItemTouchHelper.ACTION_STATE_DRAG){//可以用int形式的color 也可以用string类型的 但是要转换为int类型viewHolder.itemView.setBackgroundColor(Color.parseColor("#FF6347"));//拖拽时设置背景色为灰色}}//当item拖拽完成时调用@Overridepublic void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {super.clearView(recyclerView, viewHolder);viewHolder.itemView.setBackgroundColor(Color.parseColor("#00000000"));//拖拽停止时设置背景色为透明}//当item视图变化时调用 即被左右滑动时@Overridepublic void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);//根据item滑动偏移的值修改item透明度。screenwidth是我提前获得的屏幕宽度viewHolder.itemView.setAlpha(1-Math.abs(dX)/screenwidth);}});// itemTouchHelper需要与recyclerView绑定才有效果,在recyclerView初始化的时候调用itemTouchHelper.attachToRecyclerView(mRecyclerView);}

尚存在的问题:
1 移除的时候,移除的行会放到最后一行,并且值被更新为固定的一个值
不过重启该行会消失
2 拖曳的时候,数据没有进行移动
待完善:
1 滑动删除有删除的按钮,点击了才删除


参考:
http://www.jianshu.com/p/12ec590f6c76

RecyclerView的使用(二)——拖曳移动和滑动删除相关推荐

  1. RecyclerView 梳理:点击长按事件、分割线、拖曳排序、滑动删除

    本文作者 作者:OCNYang 链接:http://www.jianshu.com/p/70788a7a5547 本文由作者投稿发布. 这次主要是把 RecyclerView 比较常用的基本的点,在这 ...

  2. RecyclerView 梳理:点击amp;长按事件、分割线、拖曳排序、滑动删除

    这次主要是把 RecyclerView 比较常用的基本的点,在这里集中整理一下.从这篇文章主要梳理以下几点: 优雅的实现:item 点击事件 & item 长点击事件 RecyclerView ...

  3. View系列 :源码分析:RecyclerView滑动删除 全解析

    1:效果展示 效果很简单,就是 RecycleView的 滑动删除功能 2:效果分析 主要是三个步骤: 步骤一:是RecyclerView 的每一个条目上增加 删除 View控件,这个是静态xml页面 ...

  4. RecyclerView拖拽排序和滑动删除实现

    效果图 如何实现 那么是如何实现的呢?主要就要使用到ItemTouchHelper ,ItemTouchHelper 一个帮助开发人员处理拖拽和滑动删除的实现类,它能够让你非常容易实现侧滑删除.拖拽的 ...

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

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

  6. RecyclerView实现滑动删除和拖拽功能

    源码传送门 前言 从Android 5.0开始,谷歌推出了新的控件RecyclerView,相对于早它之前的ListView,优点多多,功能强大,也给我们的开发着提供了极大的便利,今天自己学习一下Re ...

  7. Android取消RecyclerView、ListView、ScrollView、HorizontalScrollView滑动到边缘闪现灰白色水波纹动画

    Android取消RecyclerView.ListView.ScrollView.HorizontalScrollView滑动到边缘闪现灰白色水波纹动画 标准的Android RecyclerVie ...

  8. recycleView 滑动删除Item,拖拽切换Item,你想了解的都在这儿

    滑动删除Item,拖拽切换Item,你想了解的都在这儿 概述 如果上两篇对RecyclerView介绍后,依然没有引起你的兴趣,那么下面关于RecyclerView的使用我相信一定会让你如获珍宝.直接 ...

  9. 滑动删除Item,拖拽切换Item,你想了解的都在这儿

    转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/52330537 1. 概述 如果上两篇对RecyclerView介绍后,依然没有引起你的 ...

最新文章

  1. Android开发——布局性能优化的一些技巧(一)
  2. win 常用网络命令
  3. Python基础08 面向对象的基本概念
  4. Celt Codec简单使用方法
  5. HTML浮动导致高度塌陷,HTML 文档流,设置元素浮动,导致父元素高度无法自适应的解决方法(高度欺骗)...
  6. N皇后问题——通俗易懂地讲解(C++)
  7. sklearn模型支持输入list吗?
  8. C语言中怎么将变量名转换为字符串 -转
  9. 这8款开源自动化测试框架,你还没用上?
  10. 大数据系统应包含哪些功能模块
  11. Linux基础-固化命令的方式grep
  12. 视觉SLAM十四讲_2_三维空间刚体运动
  13. 错误使用 eig 输入矩阵包含 nan 或 inf_特斯拉AI主管提醒你神经网络的几大常见错误...
  14. ERROR: cuvid requested, but not all dependencies are satisfied: ffnvcodec
  15. python照片处理生成3d模型_【神器】摄影实时建模,用照片生成3D模型
  16. C4D插件X-Particles粒子特效(八)
  17. VUE项目中使用阿里图标iconfont
  18. 机器学习:混淆矩阵、准确率、错误率、灵敏度、特异度、精准率、召回率、F-Measure、ROC曲线 PR曲线
  19. activiti选择上一步下一步处理人
  20. 超声波水下通讯测试接收发射信号的完整性

热门文章

  1. (一)立创EDA的安装
  2. python 神经网络可以输出连续值_dqn 神经网络输出
  3. 前端token知识:token如何存储?token过期如何处理?
  4. 买房知识总结,学习笔记【6000字】【原创】
  5. 一行代码就能使用PYTHON开发的小游戏
  6. php microtime()函数
  7. 安装 ebox 防火墙
  8. 安装sql server 2000:以前的某个程序安装已在安装计算机上创建挂起的文件
  9. Logstash系列之--JAVA自定义插件
  10. 如何在谷歌卫星地图中叠加等高线并打印