远比ListView强大的RecyclerView简介与基本使用方法

  • A+
所属分类:Android

在App里,列表类的控件绝对是重中之重,是最常用的控件之一。从Android诞生之日起,Google就为我们提供了ListView,它也陪伴众多开发者和用户一起度过了好多年的时光。然而随着时代的发展,旧的ListView已经不能满足需求了。Google也就顺势而为,给我们带来了一个更加强大的控件,就是我们今天的主角——RecyclerView了。

如果从名字上理解,那么RecyclerView就表示是一个可回收的视图。这点该怎么理解呢?我们知道,ListView在使用的时候,在实际项目中使用ViewHolder来提升性能节约内存是必须要做的,但实际上Android本身并没有对此做强制要求,你就是不使用ViewHolder也不会出错,只是你的ListView性能会低下罢了。而在RecyclerView这里,会强制你使用ViewHolder,这是一个很有必要的改进。

来看一个RecyclerView的简单使用吧:

首先,请在module的build.gradle文件里面,添加项目对于RecyclerView的依赖,因为RecyclerView是Google单独提供给开发者的,而没有包含在support的v4、v7或者v13的包中:

compile 'com.android.support:recyclerview-v7:25.3.1'

在布局文件里,依然是简单的声明一个RecyclerView即可:

在Java代码中,RecyclerView的使用跟你所熟悉的ListView没有太大区别,最大的不同之处在于,你需要给它设置一个LayoutManager。如果是最平常的垂直方向的,则是这样:
recyclerView = (RecyclerView)findViewById(R.id.recyclerView);

recyclerView.setLayoutManager(new LinearLayoutManager(this));

之后,就需要设置一个Adapter了。我们之前说过,RecyclerView的Adapter是强制使用ViewHolder的:

我这种写法,是把Adapter类直接写在Activity里面的,当然你可以让它单独分在一个java文件里面,唯一的区别在于需要把相应的Context以及其他数据传递进去而已。在MyAdapter类里面有一个内部类ViewHolder,这个就是我们必须实现的,而不是像ListView那样凭自己喜好。可以看到,RecyclerView的Adapter是必须实现3个方法的:onCreateViewHolder、onBindViewHolder和getItemCount。3个方法言简意赅,从名字上不难理解其作用:onCreateViewHolder就是创造了一个ViewHolder,返回值的类型就是你自己所实现的ViewHolder,实际上也就是加载了每个item的布局文件,从而获得了一个View。而在onBindViewHolder中,实现了数据与ViewHolder的绑定。在getItemCount里,可以设定RecyclerView一共有多少个元素。

然后初始化Adapter,并把Adapter对象赋给RecyclerView对象即可。

 

运行效果如图所示:

recyclerview-demo-result

当然了,今天说的只是RecyclerView最基本的用法。实际上它是一个极其强大的控件,以后还会介绍更多更强、更高级的用法。否则只是一个简单的列表展示,用ListView就足够了嘛。

 

KaelLi

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: