Android开发——RecyclerView特性以及基本使用方法(二)
来源:互联网 发布:淘宝比价格的软件 编辑:程序博客网 时间:2024/05/20 16:37
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() { @Override public void onClick(View view) { if (itemClickListener != null) { itemClickListener.onItemClick(view, getPosition()); } } }); textView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { if (itemClickListener != null) { itemClickListener.onItemLongClick(view, getPosition()); } return true; } }); }}
首先自行提供了点击和长按的接口,并在内部类ViewHolder中对点击事件进行了处理。
在Activity中的实现如下:
mAdapter.setOnItemClickListener(new RecyclerAdapter.OnItemClickListener() { @Override public void onItemClick(final View view, int position) { Toast.makeText(MainActivity.this, position + "", Toast.LENGTH_SHORT).show(); } @Override public 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可以正常的响应点击事件,和长按删除事件,而且添加和删除事件都是有动画效果的。
源码下载地址点这里。
- Android开发——RecyclerView特性以及基本使用方法(二)
- Android开发——RecyclerView特性以及基本使用方法(一)
- Android NFC开发(二)——Android世界里的NFC所具备的条件以及使用方法
- Android开发 ---RecyclerView基本用法
- [Android开发] RxJava2之路二 - 基本使用方法
- RecyclerView基本使用方法
- RecyclerView的基本使用方法
- RecyclerView的基本使用方法
- Android开发入门(二)——基本语法2
- 【Android开发】RecyclerView的基本使用
- Android开发笔记(一百二十二)循环器视图RecyclerView
- Android开发技术研究--RecyclerView使用完全解析(二)(用RecyclerView代替ListView)
- android Handler的基本使用方法和介绍(二)
- RecyclerView的基本用法 (二)
- Android应用开发—RecyclerView+SwipeToLoadLayout
- Android开发--RecyclerView使用,看AndroidL新特性
- Android开发--RecyclerView使用,看AndroidL新特性
- Android开发--RecyclerView使用,看AndroidL新特性
- C++面试宝典2011版
- 索引排序文件--不排序数据排序索引暨介绍大数据常用的显示数据的两种方式
- 简述什么是框架
- 如何转载博客
- Qt 点线效果
- Android开发——RecyclerView特性以及基本使用方法(二)
- Android学习笔记--BaseActivity和BaseFragment的再抽取
- 处子之身写博客
- pycharm上安装使用easygui
- android学习的一些看法
- Codeforces Round #389 Technocup 2017 E. Santa Claus and Tangerines(二分+DP)
- 怎么设置jsp的text文本框的内容不能修改
- Swift-继承、重写
- 我的框架--QiCai(二)