RecyclerView这个控件是非常常用的一个控件,日常生活中我们也经常会使用,比如说查看qq聊天记录,翻看微博的消息。并且RecyclerView还可以轻松实现ListView同样的效果,并且优化了ListView不能横向滑动等弊端,可以说,未来也会有更多的程序,从ListView转向RecyclerView。在本篇文章中会看到如何用RecyclerView做出和ListView相同的功能。
RecyclerView的使用:以Fruit为例,我们想要实现的效果为:一个列表中显示水果的图片,对应的后面是水果的名称。
准备一个Fruit类和fruit_item.xml,代码如下:
首先需要添加依赖关系,在build.gradle的dependencise闭包中添加如下内容:
接着修改activity_main.xml中的代码:
之后点击Sync Now进行同步。由于RecyclerView并不是内置在系统SDK中的,所以要 将完整的包路径写出来。
接下来要为RecyclerView准备一个适配器,新建一个FruitAdapter类,让其继承自RecyclerView.Adapter,并指定泛型为FruitAdapter.ViewHolder。其中ViewHolder是FruitAdapter的一个内部类。
代码如下:
由于FruitAdapter是继承自RecyclerView.Adapter的,那么就必须重写onCreateViewHolder(),onBindViewHolder(),getItemCount()这三个方法。
onCreateViewHolder()是用来创建ViewHolder实例的,将fruit_item布局加载进来,然后创建出一个ViewHolder实例,并将加载的函数传入到构造函数中,接着ViewHolder的实例返回。
onBindViewHolder()方法是用来对子项的数据数据进行赋值的。
getItemCount()方法是用来获取子项个数的,直接返回数据源的长度。
适配器准备好了以后,修改MainActivity的代码,如图:
这里的initFruits()方法是用来初始化水果数据的。
这样,RecycerView实现ListView的功能就算完成。
运行效果如图:
ps:因为我实在懒得去找个各种水果的照片,就用Android本来的图代替了,这不会对我们学习RecyclerView造成影响.