Android开发——RecyclerView特性以及基本使用方法(二)
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特性以及基本使用方法(二)相关推荐
- android开发 RecyclerView 列表布局
android开发 RecyclerView 列表布局 前言 这是一个我早期学习的RecyclerView的博客,最近想整理一下它.后续会一点一点的再次添加内容. 导入 虽然RecyclerView是 ...
- Android开发环境搭建及常见问题解决方法
Android开发环境搭建及常见问题解决方法 参考文章: (1)Android开发环境搭建及常见问题解决方法 (2)https://www.cnblogs.com/rwxwsblog/p/476978 ...
- 文件管理器android实现,Android开发之简单文件管理器实现方法
易采站长站为您分析Android开发之简单文件管理器实现方法,简单实现了Android的文件目录查看,文件重命名,打开,删除等功能,需要的朋友可以参考下 本文实例讲述了Android开发之简单文件管理 ...
- android开发 RecyclerView 瀑布列表布局
android开发 RecyclerView 瀑布列表布局 1.写一个内容的自定义小布局: <?xml version="1.0" encoding="utf-8& ...
- Android开发中调用系统窗口的方法
//直接拨号 Intent callIntent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:12345678")); start ...
- android自定义省略号,Android开发自定义TextView省略号样式的方法
本文实例讲述了Android开发自定义TextView省略号样式的方法.分享给大家供大家参考,具体如下: 在布局xml中设置textView的字段 android:maxLines="2&q ...
- 关于android开发中startActivityForResult废弃的替换方法调用
关于android开发中startActivityForResult废弃的替换方法调用 在最近一段时间中,能在开发时看到在android studio中,startActivityForResult方 ...
- android动画背景,Android开发之背景动画简单实现方法
在Android开发中,我们都会接到项目的业务需求,实现应用程序背景动画的效果,接下来,爱站技术频道小编带给大家的Android开发之背景动画简单实现方法. 1.先创建动画层,有三张图片 androi ...
- Android开发:ADB真机调试方法
Android开发:ADB调试 ADB调试分有线和无线,无线又分是否在同一局域网,建议使用无线和不在同一局域网的连接方法,简单方便 1.有线 在有usb线的情况下,连接笔记本和要调试的真机设备 打开手 ...
最新文章
- asp.net .ashx文件使用server.mappath解决方法
- python 的时间模块使用
- hive 十六进制转十进制_hive 常用运算
- Wireshark之捕获过滤器
- “聆听”升级,阿里云智能喜迎首席聆听官
- 常见五轴机床的机械结构形式讲解!
- websocket+cdn架构部署
- Lanproxy 路径遍历漏洞 (CVE-2021-3019)
- Emojify – Create your own emoji with Deep Learning 通过深度学习创建你自己的表情
- python中bytes_Python3中的bytes和str类型
- Latex输入矩阵的几种方式
- mybatis实现动态模糊查询
- 达内-JavaWeb考试复习
- php 图片处理,根据rgb生成纯色的图片
- 【MATLAB】命令技巧
- 繁易平台对接阿里云平台: MQTT方式
- Python之Request模块学习
- CEC设备连接和寻址
- bzoj3771 Triple
- 【FPGA学习】HDLbits练习(持续更新中。。。。)
热门文章
- MySQL卸干净与下载安装(2020最新版+亲测踩坑可用)
- mysql 数据库名字 mac,【已解决】Mac本地给mysql数据库改名
- 如何在ubuntu 12.04系统下开启nfs网络文件系统
- 支持向量机SVM(Support Vector Machines)介绍
- C++笔记——指针函数/函数指针
- Windows7上安装TensorFlow——基于Docker镜像
- python3(十)pickle库
- 编写分段函数子函数_编写自己的函数
- rw data 、ro data 和 code详解
- 保护Eclipse RCP应用的商业Java编译器