时间:2015-07-31 来源:

RecyclerView借助ItemTouchHelper实现拖动和滑动删除功能

RecyclerView是官方推荐取代ListView的空间web切图报价,如何实现RecyclerView列表元素的拖动呢?

版权声明:本文为博主原创文章,web切图报价未经博主允许不得转载.

官方提供了ItemTouchHelper类使用步骤如下:

定义ItemTouchHelper.Callback实现类,psd转html"THREE","FIVE","SEVEN","NINE", int toPosition) { String prev = mItems.remove(fromPosition); mItems.add(toPosition > fromPosition ? toPosition - 1 : toPosition,toPosition); } @Override public void onItemDismiss(int position) { mItems.remove(position); notifyItemRemoved(position); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent,parent, int position) { holder.textView.setText(mItems.get(position)); holder.handleImgv.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view,"onTouch.ACTION_DOWN"); } return false; } }); } @Override public int getItemCount() { return mItems.size(); } public class MyViewHolder extends RecyclerView.ViewHolder implements ItemStatusListener{ public ImageView handleImgv; public TextView textView; public MyViewHolder(View view){ super(view); textView = (TextView)view.findViewById(R.id.text); handleImgv = (ImageView)view.findViewById(R.id.handle); } @Override public void onItemSelected() { itemView.setBackgroundColor(Color.LTGRAY); } @Override public void onItemClear() { itemView.setBackgroundColor(Color.TRANSPARENT); } } public interface OnDragListener{ public void onStartDrag(MyViewHolder holder); public void onStartSwipe(MyViewHolder holder); } } 这样一个拖动重排的功能就实现了:

package com.zms.copyapp.helper; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; import android.util.Log; /** * Created by Msn on 2015/7/28. */ public class MyItemTouchHelperCallback extends ItemTouchHelper.Callback{ private ItemTouchListener mItemTouchListener; public MyItemTouchHelperCallback(ItemTouchListener itemTouchListener){ mItemTouchListener = itemTouchListener; } /** * 支持长按进入拖动 * @return */ @Override public boolean isLongPressDragEnabled() { return true; } @Override public boolean isItemViewSwipeEnabled() { return false; } /** * 指定拖动和滑动支持的方向 * @param recyclerView * @param viewHolder * @return */ @Override public int getMovementFlags(RecyclerView recyclerView,swipeFlag); } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder target) { Log.e("Test", target.getAdapterPosition()); return true; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, "onSwiped--------------------------------"); mItemTouchListener.onItemDismiss(viewHolder.getAdapterPosition()); } /** * 在每次View Holder的状态变成拖拽 (ACTION_STATE_DRAG) 或者 滑动 (ACTION_STATE_SWIPE)的时候被调用. * @param viewHolder * @param actionState */ @Override public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, actionState); } /** * 在一个view被拖拽然后被放开的时候被调用符合w3c标准, RecyclerView.ViewHolder viewHolder) { super.clearView(recyclerView, viewHolder); ItemStatusListener listener = (ItemStatusListener)viewHolder; listener.onItemClear(); } }

点击次数:6715
作者:
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日"automation服务器不能创建对象”的问题的解决方案总结大全2014年01月30日Javasocket访问网页【编程语言】2015年04月29日网页开发调试工具Firebug1.9a5发布 ,,2016年06月29日NoSQL2.0要来临了吗? ,,2016年07月24日【BZOJ1293】【SCOI2009】生日礼物单调性 【编程语言】2015年06月12日Android性能优化Google课程翻译一:Memory 【编程语言】2015年05月27日D-CyclicNacklaceHDU3746(kmp计算字符串最小循环节)【编程语言】2015年04月17日Android手机的版本号和API号码匹配表?【编程语言】2015年03月02日Linuxmm相关的问题 【系统运维】2015年07月08日5、JavaScript高级之私有属性 【编程语言】2015年03月02日RightmostDigit(杭电1061)(求N^N的最低位)【综合】2014年11月17日Fireworks绘制简洁精致的Rss图标2014年01月28日Codeforces474A【编程语言】2015年08月29日Prototype使用指南之array.js2014年01月29日数据结构-线索二叉树 【编程语言】2015年05月05日绝对真实的大学生活2014年01月29日POJ3666MakingtheGrade(DP+离散化) 【系统运维】2015年03月16日@Autowired和@Resource装配 【编程语言】2015年07月01日jqueryindexOf使用方法2014年01月29日深谙用户界面设计之道方能在竞争中脱颖而出2014年01月28日javascript简易动画类(div渐变)2014年01月29日项目管理和代码托管平台GitLabv8.10.6v8.9.7和v8.8.8发布 ,,2016年08月18日POJ3233---MatrixPowerSeries(矩阵快速幂+二分) 【编程语言】2015年03月11日Python-在定义函数时,为什么默认参数不能放在必选参数前面?2014年12月03日【Android5系列—】3.支持不同的设备 【移动开发】2015年07月08日HibernateSearchv5.6.0.Beta1发布 ,,2016年06月23日Android获取应用程序大小的方法2014年01月30日java踩坑记2017年09月27日如何让一个方框栏内的文字滚动显示?2014年01月29日如何查看Tomcat是32位还是64位 【云计算】2015年04月27日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)