Android开发笔记(一百二十二)循环器视图RecyclerView

这篇博客详细探讨了Android开发中的RecyclerView组件,包括其作为循环器视图的角色,如何使用循环适配器,以及三种布局管理器——LinearLayoutManager、GridLayoutManager和StaggeredGridLayoutManager的用法和特性。

RecyclerView

RecyclerView是Android在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView、GridView,以及瀑布流网格的显示效果。


RecyclerView相关工程在sdk中的路径为sdk\extras\android\support\v7\recyclerview,不过幸好用它不像用Toolbar那样麻烦,要想使用Toolbar得先导入并引用v7-appcompat工程(具体步骤参见《 Android开发笔记(一百一十九)工具栏Toolbar》),而使用RecyclerView只需像其他第三方jar一样往libs目录添加android-support-v7-recyclerview.jar就好了。
但是若在Eclipse/ADT中调用RecyclerView,可能app运行时会报错“Caused by: java.lang.NoClassDefFoundError: android.support.v7.recyclerview.R$styleable”,这时就不能使用sdk\extras\android\support\v7\recyclerview下面的jar包,而要到extras/android/m2repository/com/android/support/recyclerview-v7目录下,在版本号21.0.0的子目录中找到recyclerview-v7-21.0.0.aar,该aar文件其实是个压缩文件,解压该文件可得到classes.jar,将该jar包更名并加入到你的工程,上面的运行错误应该就没有了。 


下面看看强悍的RecyclerView都提供了哪些常用方法:
setAdapter : 设置列表项的适配器。有关适配器的详细说明见下一标题。
setLayoutManager : 设置列表项的布局管理器。目前有三种,分别是:线性布局管理器LinearLayoutManager、网格布局管理器GridLayoutManager、瀑布流网格布局管理器StaggeredGridLayoutManager。有关布局管理器的详细说明见本文的后半部分。
addItemDecoration : 添加列表项的分割线。
removeItemDecoration : 移除列表项的分割线。
setItemAnimator : 设置列表项的增删动画。
addOnItemTouchListener : 添加列表项的触摸监听器。因为RecyclerView没有实现列表项的点击接口,所以开发者可通过这里的触摸监听器来监控用户手势。
removeOnItemTouchListener : 移除列表项的触摸监听器。


循环适配器

RecyclerView有专门的适配器类,即RecyclerView.Adapter。在调用RecyclerView的setAdapter方法前,我们要先实现一个从RecyclerView.Adapter派生而来的数据适配器,用来定义列表项的布局与具体操作。下面是与RecyclerView.Adapter相关的常用方法:


下面是自定义适配器必须要重写的方法:
getItemCount : 获得列表项的数目。
onCreateViewHolder : 创建整个布局的视图持有者。输入参数中包括视图类型,可根据视图类型加载不同的布局,从而实现带头部的列表布局。
onBindViewHolder : 绑定每项的视图持有者。
下面是可以重写也可以不重写的方法:
getItemViewType : 返回每项的视图类型。这里返回的视图类型给onCreateViewHolder方法使用。
getItemId : 获得每项的编号。
下面是可以直接调用的方法:
notifyItemInserted : 通知适配器在指定位置插入了新项。
notifyItemRemoved : 通知适配器在指定位置删除了原有项。
notifyItemChanged : 通知适配器在指定位置的项目发生了变化。
notifyDataSetChanged : 通知适配器整个列表的数据发生了变化。


总的来说,RecyclerView.Adapter与我们之前经常遇到的BaseAdapter在处理流程上是基本一致的,当然它们之间也有不小的差异,下面是RecyclerView.Adapter和其他适配器的主要区别:
1、自带ViewHolder及其重用功能,无需开发者手工重用ViewHolder;
2、未自带列表项的点击和长按功能,需要开发者自己实现点击和长按事件的监听;
3、增加区分不同列表项的视图类型,方便开发者根据类型加载不同的布局;
4、可单独对个别项进行增删改操作,无需刷新整个列表;


下面是RecyclerView.Adapter的一个自定义类的代码例子:
import com.example.exmrecycler.R;
import com.example.exmrecycler.interfaces.OnItemClickListener;
import com.example.exmrecycler.interfaces.OnItemLongClickListener;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值