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

0.  前言

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

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


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

系统没有提供ClickListenerLongClickListener,不过我们也可以自己去添加,这里通过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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm中使用scrapy命命

2019独角兽企业重金招聘Python工程师标准>>> 这篇博客写的不错,亲测 https://blog.csdn.net/MAOZEXIJR/article/details/80678133 转载于:https://my.oschina.net/u/2511906/blog/1934993

PrimeTime指南——合理设置约束

完整的STA需要满足以下两点: 完整的设计约束(完整并不意味着正确)运行所有需要的时序检查可以用以下两条命令来进行完整性的检查: check_timing // 检查是否缺少了约束条件 report_analysis_cove…

Matlab增加块注释

1)方法一选中你要加注释的内容,然后选择工具菜单“text|comment”就可以了,如果要把注释变为语句,同样选中要转变的语句,然后用鼠标选择“text|uncomment”就可以了。用键盘的快捷键是"CtrlR".或者选中你要加…

理解正向代理和反向代理

首先,大家可以看一下这里https://www.zhihu.com/question/24723688 其实答复的非常清楚了。 知乎网友阿笠硕士图画的很形象,地址为https://www.zhihu.com/question/24723688/answer/48369770 其次,我自己根据专家的解释,总结如下…

tablayout支持改变选中文字大小,支持左右滑动,支持viewpager,支持三角可移动指示器...

TabLayout [简书地址] (https://www.jianshu.com/p/2c3f868266e8) 基于大神的FlycoTabLayout [传送地址和基本用法](https://github.com/H07000223/FlycoTabLayout) 用法和属性和这个库一样 效果图如下 主要添加一个属性 tl_text_select_size 控制选中文字大小 看代码截图 然后…

Design Compiler指南——概述和基本流程

综合是前端模块设计中的重要步骤之一,综合的过程是将行为描述的电路、RTL级的电路转换到门级的过程;Design Compiler是Synopsys公司用于做电路综合的核心工具,它可以方便地将HDL语言描述的电路转换到基于工艺库的门级网表。本文将简单介绍综合…

linux常用网络命令

关键词:linux网络命令、ifconfig、route、ip、netstat、socket flag 引言: 想成为真正的高手,必须要熟练掌握linux系统的命令行操作,今天就回顾一下linux在网络上的常用命令相关知识, 另外,实践才是最终的方…

图像增强汇总

1、 图像增强技术包括 1) 图像灰度变换方法 2) 直方图修正方法 3) 图像平滑处理 4) 图像尖锐化处理 5) 彩色处理技术 2、 图像增强技术基本上分为两大类:频域处理法和时域处理法。 3、 频…

javaweb(三十八)——mysql事务和锁InnoDB(扩展)

MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题&…

Design Compiler指南——预综合过程

预综合过程是指在综合过程之前的一些为综合作准备的步骤,包括Design Compiler的启动、设置各种库文件、创建启动脚本文件、读入设计文件、DC中的设计对象、各种模块的划分以及Verilog的编码等等。 一、Design Compiler的启动 目前,DC的启动方式有三种&a…

KAFKA介绍(分布式架构)

2019独角兽企业重金招聘Python工程师标准>>> 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kaf…

jquery 回车事件

简单地记下jquery实现回车事件,代码如下:全局: $(document).keydown(function(e){if(e.keyCode13){$(".login-li input[typebutton]").trigger("click");} });某个控件: $("body").keydown(functio…

Three.js 详细解析(持续更新)

1、简介; Three.js依赖一些要素,第一是scene,第二是render,第三是carmea npm install --save three import * as THREE from "three"; import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js&quo…

[js高手之路]构造函数的基本特性与优缺点

上文,通过基本的对象创建问题了解了构造函数,本文,我们接着上文继续了解构造函数的基本特性,以及优缺点. 每个对象上面都有一个constructor属性( 严格意义上来说,是原型上的,对象是通过查找到原型找到 constructor属性…

Design Compiler指南——施加设计约束

Design Compiler是一个约束驱动(constrain-driven)的综合工具,它的结果是与设计者施加的约束条件密切相关的。在本文里,我们主要讨论怎样给电路施加约束条件,这些约束主要包括——时序和面积约束、电路的环境属性、时序和负载在不同模块之间的…

Python:eval的妙用和滥用

时间 2014-07-08 13:05:24 CSDN博客 原文 http://blog.csdn.net/zhanh1218/article/details/37562167主题 Python eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。 so,结合math当成一个计算器很好用…

程维柳青发布道歉声明:滴滴顺风车业务将无限期下线

雷锋网(公众号:雷锋网)消息,8 月 28 日晚间,滴滴创始人兼 CEO 程维和滴滴总裁柳青正式发出道歉声明,向受害者和受害者家属道歉——这已经离本次滴滴顺风车悲剧的发生整整四天的时间。 声明表示,滴滴不再以规模和增长作…

MATLAB图像增强程序举例

1.灰度变换增强程序: % GRAY TRANSFORM clc; Iimread(pout.tif); imshow(I); Jimadjust(I,[0.3 0.7],[0 1],1); %transforms the walues in the %intensity image I to values in J by linealy mapping %values between 0.3 and 0.7 to values between 0 and 1. fi…

Design Compiler指南——设计综合过程

在前面一章介绍完施加约束之后,接下来要做的工作就是将设计进行综合编译(compile),本文我们将主要讨论综合编译的过程。主要分为这样几个部分: 优化的三个阶段及其特点编译的策略编译层次化的设计 一、优化的三个阶段 这一节我们介绍Design …

How to find Material based on Sales Organization and Distribution Channel

Fetch data from Database View /BEV1/RBEA_V Fields: VKORG - Sales Organization VTWEG - Distribution Channel MATNR - Material Number 转载于:https://www.cnblogs.com/JulietLV/p/7436028.html