0.  前言

随着Android的发展,虽然ListView依旧重要,但RecyclerView确实越来越多的被大家使用。但显然并不能说RecyclerView就一定优于ListView,而是应该根据不同的需求选择最合适的进行使用。本篇将介绍我们为什么要使用RecyclerView,并且它的基本使用方法。

在Android开发——RecyclerView特性以及基本使用方法(一)中主要介绍了我们为什么要使用RecyclerView,以及RecyclerView强大的LayoutManager。这篇将主要介绍RecyclerView中的动画效果以及点击事件的处理。本文原创,转载请注明出处为SEU_Calvin的博客。

1.  RecyclerView的动画效果和点击事件

系统没有提供ClickListener和LongClickListener,不过我们也可以自己去添加,这里通过adapter中自己去提供回调的方式实现。

在Adapter中如下所示:

 public OnItemClickListener itemClickListener;public void setOnItemClickListener(OnItemClickListener itemClickListener) {this.itemClickListener = itemClickListener;}public interface OnItemClickListener {void onItemClick(View view, int position);void onItemLongClick(View view, int position);}public class ViewHolder extends RecyclerView.ViewHolder{public TextView textView;public ViewHolder(View itemView) {super(itemView);textView = (TextView)itemView.findViewById(R.id.id_num);textView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (itemClickListener != null) {itemClickListener.onItemClick(view, getPosition());}}});textView.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View view) {if (itemClickListener != null) {itemClickListener.onItemLongClick(view, getPosition());}return true;}});}
}

首先自行提供了点击和长按的接口,并在内部类ViewHolder中对点击事件进行了处理。

在Activity中的实现如下:

mAdapter.setOnItemClickListener(new RecyclerAdapter.OnItemClickListener() {@Overridepublic void onItemClick(final View view, int position) {Toast.makeText(MainActivity.this, position + "", Toast.LENGTH_SHORT).show();}@Overridepublic void onItemLongClick(View view, int position) {mAdapter.removeData(position);}});

这里简单的单击事件,只是Toast了位置信息,而在长按事件中,则调用了Adapter中的removeData()方法,notifyItemRemoved()方法则对该条目进行了删除,而且是有动画效果的。若有添加数据的需求,也是有对应的方法,即notifyItemInserted(position)。

public void removeData(int position) {mData.remove(position);notifyItemRemoved(position);}public void addData(int position) {mData.add(position, "Insert One");notifyItemInserted(position);}

当然,需要为RecyclerView进行关于动画的设置:

mRcList.setItemAnimator(newDefaultItemAnimator());

这里需要注意的是,如在Android开发——RecyclerView特性以及基本使用方法(一)中显示的那样,notifyDataSetChanged()是没有动画效果的。从效果图中可以看到,RecyclerView可以正常的响应点击事件,和长按删除事件,而且添加和删除事件都是有动画效果的。

源码下载地址点这里。

转载于:https://www.cnblogs.com/qitian1/p/6461452.html

Android开发——RecyclerView特性以及基本使用方法(二)相关推荐

  1. android开发 RecyclerView 列表布局

    android开发 RecyclerView 列表布局 前言 这是一个我早期学习的RecyclerView的博客,最近想整理一下它.后续会一点一点的再次添加内容. 导入 虽然RecyclerView是 ...

  2. Android开发环境搭建及常见问题解决方法

    Android开发环境搭建及常见问题解决方法 参考文章: (1)Android开发环境搭建及常见问题解决方法 (2)https://www.cnblogs.com/rwxwsblog/p/476978 ...

  3. 文件管理器android实现,Android开发之简单文件管理器实现方法

    易采站长站为您分析Android开发之简单文件管理器实现方法,简单实现了Android的文件目录查看,文件重命名,打开,删除等功能,需要的朋友可以参考下 本文实例讲述了Android开发之简单文件管理 ...

  4. android开发 RecyclerView 瀑布列表布局

    android开发 RecyclerView 瀑布列表布局 1.写一个内容的自定义小布局: <?xml version="1.0" encoding="utf-8& ...

  5. Android开发中调用系统窗口的方法

    //直接拨号 Intent callIntent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:12345678")); start ...

  6. android自定义省略号,Android开发自定义TextView省略号样式的方法

    本文实例讲述了Android开发自定义TextView省略号样式的方法.分享给大家供大家参考,具体如下: 在布局xml中设置textView的字段 android:maxLines="2&q ...

  7. 关于android开发中startActivityForResult废弃的替换方法调用

    关于android开发中startActivityForResult废弃的替换方法调用 在最近一段时间中,能在开发时看到在android studio中,startActivityForResult方 ...

  8. android动画背景,Android开发之背景动画简单实现方法

    在Android开发中,我们都会接到项目的业务需求,实现应用程序背景动画的效果,接下来,爱站技术频道小编带给大家的Android开发之背景动画简单实现方法. 1.先创建动画层,有三张图片 androi ...

  9. Android开发:ADB真机调试方法

    Android开发:ADB调试 ADB调试分有线和无线,无线又分是否在同一局域网,建议使用无线和不在同一局域网的连接方法,简单方便 1.有线 在有usb线的情况下,连接笔记本和要调试的真机设备 打开手 ...

最新文章

  1. asp.net .ashx文件使用server.mappath解决方法
  2. python 的时间模块使用
  3. hive 十六进制转十进制_hive 常用运算
  4. Wireshark之捕获过滤器
  5. “聆听”升级,阿里云智能喜迎首席聆听官
  6. 常见五轴机床的机械结构形式讲解!
  7. websocket+cdn架构部署
  8. Lanproxy 路径遍历漏洞 (CVE-2021-3019)
  9. Emojify – Create your own emoji with Deep Learning 通过深度学习创建你自己的表情
  10. python中bytes_Python3中的bytes和str类型
  11. Latex输入矩阵的几种方式
  12. mybatis实现动态模糊查询
  13. 达内-JavaWeb考试复习
  14. php 图片处理,根据rgb生成纯色的图片
  15. 【MATLAB】命令技巧
  16. 繁易平台对接阿里云平台: MQTT方式
  17. Python之Request模块学习
  18. CEC设备连接和寻址
  19. bzoj3771 Triple
  20. 【FPGA学习】HDLbits练习(持续更新中。。。。)

热门文章

  1. MySQL卸干净与下载安装(2020最新版+亲测踩坑可用)
  2. mysql 数据库名字 mac,【已解决】Mac本地给mysql数据库改名
  3. 如何在ubuntu 12.04系统下开启nfs网络文件系统
  4. 支持向量机SVM(Support Vector Machines)介绍
  5. C++笔记——指针函数/函数指针
  6. Windows7上安装TensorFlow——基于Docker镜像
  7. python3(十)pickle库
  8. 编写分段函数子函数_编写自己的函数
  9. rw data 、ro data 和 code详解
  10. 保护Eclipse RCP应用的商业Java编译器