• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android之RecyclerView(二),androidrecyclerview

Android之RecyclerView(二),androidrecyclerview

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android recyclerview,android videoview,android searchview,android pickerview,android pdfview等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android之RecyclerView(二),androidrecyclerview


  上篇文章对RecyclerView的使用做了简单的介绍,本篇文章将继续介绍。RecyclerView的adapter不同于ListView的适配器,除了提供了notifyDataSetChanged方法之外,还提供了更多的数据更新方法,结合ItemAnimator一起使用,可以起到不错的效果。Adapter中提供的方法如下图:

  下面在上述的案例的基础上继续,最终完成效果如下图:

主要代码如下:

1、  为RecyclerView增加默认动画

recyclerView.setItemAnimator(new DefaultItemAnimator());

2、  实现删除方法:

public void delItem(View view){
            mData.remove(2);
            adapter.notifyItemRemoved(2);
}

3、  实现新增方法:

public void addItem(View view){
    mData.add(2,"这是新增的Item");
    adapter.notifyItemInserted(2);
}

  通过以上方式可以完成在某个位置删除和新增一个Item,并配有默认的动画效果。

  除了上述实现之外,我们用的比较多的是滑动消失和拖放的效果,在RecyclerView中,同样可以实现并且使用官方提供的Api即可。实现这个效果之前,我们先熟悉一下相关的API。

  ItemTouchHelper,该类是实现RecyclerView滑动消失和拖放的工具类,并提供了一个CallBack接口。在该接口中有如下方法:

1、     public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder):用于返回拖放、滑动的方向和状态等,需要调用makeMovementFlags(int dragFlags, int swipeFlags)来生成返回值。
2、  public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) :当拖拽Item是调用该方法,第一个参数代表拖拽的item,第二个参数代表目标item。
3、  public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction):滑动Item时调用该方法,第二个参数代表滑动的方向。
4、  public boolean isItemViewSwipeEnabled():是否支持滑动返回true代表支持。
5、  boolean isLongPressDragEnabled():是否支持拖拽,返回true代表支持。

  通过实现以上方法,我们就可以完成简单的滑动消失和拖放效果了,核心代码如下:

  ItemTouchHelper的定义:

    itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
    @Override
    public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
        //滑动的时候支持的方向
        int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
        //拖拽的时候支持的方向
        int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
        //必须调用该方法告诉ItemTouchHelper支持的flags
        return makeMovementFlags(dragFlags, swipeFlags);
    }

    @Override
    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
        adapter.move(viewHolder.getAdapterPosition(), target.getAdapterPosition());
        return true;
    }

    @Override
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
        adapter.delete(viewHolder.getAdapterPosition());
    }

    @Override
    public boolean isItemViewSwipeEnabled() {
        return true;
    }

    @Override
    public boolean isLongPressDragEnabled() {
        return true;
    }
});

在Adapter中分别定义delete和move方法,具体如下:

public void delete(int position) {
    mData.remove(position);
    notifyItemRemoved(position);
}

public void move(int from,int to){
    String prev = mData.remove(from);
    mData.add(to > from ? to - 1 : to, prev);
    notifyItemMoved(from, to);
}

最终实现效果如下图,所示:

 

作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:JRedu技术交流
 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 在Kotlin编写RecyclerView适配器(KAD 16),kotlinrecyclerview
  • 深入理解 Android 之 View 的绘制流程,androidview
  • RecyclerView在软键盘弹出时自动调整内容技巧,recyclerview技巧
  • RecyclerView的五大开源项目-解决办法
  • Android View分区域点击实现方案——1.根据坐标范围
  • 【读书笔记】【Android 开发艺术探索】第3章 View 的事件体系
  • Android View体系(六)从源码解析Activity的构成
  • RecyclerView再封装,RecyclerView封装
  • Android中View的滑动冲突——Android开发艺术探索笔记
  • Android View体系(二)实现View滑动的六种方法

相关文章

  • 2017-05-26Android-Universal-Image-Loader (图片异步加载缓存库)对Bitmap的优化处理
  • 2017-05-26Android 中间人攻击
  • 2017-05-26从源码角度入手实现RecyclerView的Item点击事件,recyclerviewitem
  • 2017-05-26Android 蓝牙操作详解,android蓝牙详解
  • 2017-05-26高并发低基数多字段任意组合查询的优化
  • 2017-05-26计算器Pro应用项目源码,计算器pro源码
  • 2017-05-26android布局不带参数返回,android布局参数
  • 2017-05-26安卓第十六天笔记-音频与视频播放,安卓第视频播放
  • 2017-05-26项目优化之热更新,项目优化
  • 2017-05-26android实现文字渐变效果和歌词进度的效果

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android安卓破解之逆向分析SO常用的IDA分析技巧
    • 2.4.9 ListView的数据更新问题
    • 关于Android发送短信获取送达报告的问题,android发送短信
    • LinearLayout嵌套,linearlayout
    • [android] 手机卫士保存密码时进行md5加密,androidmd5
    • Winform突然不响应KeyEvent了
    • Android常用英文词汇,不为命名纠结,android英文
    • Android特效专辑(十)——点击水波纹效果实现,逻辑清晰实现简单
    • 【架构篇】Android移动app架构设计浅谈
    • Android,androidstudio

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有