2018-05-07—RecyclerView使用

大家好,已经有一段时间没有写博客了,51放了个好假哈哈哈。我在CSDN现在也在写博客,是一些关于Android进阶的一些东西,希望大家还是多去光顾一下,帮我找找哪里有不足。

链接:季白的CSDN博客


大家还记得我们学过的ListView吧,今天在群里跟朋友们交流了一下,有的人说按照谷歌的尿性,再过几个版本就要彻底舍弃ListView了(是不是真的我不知道,不过就算舍弃,我们也还是得会用是吧哈)。而与之有着相同功能的一个控件,甚至功能比他更加强大的一个控件,叫做RecyclerView,这个控件也是为了展示多条目item的一个控件,他和ListView相比,还有很多别的功能:比如我们如果想让列表为横向滑动,或者想将列表设置为瀑布流。。。这些ListView就不能做到了,今天我们来一起看一下RecyclerView:

这个是RecyclerView的效果:

RecyclerView效果

是不是跟ListView很像。现在让我们看看他是怎么使用的:


1.添加依赖,

RecyclerView不像ListView是系统只带的,他需要我们注入依赖,

我选用版本26.1.0。

现在我们可以在布局中使用它了。

2.添加布局

3.java代码


上面这些步骤很多都熟悉了,我们只说一个,LinearLayoutManager,我们把这个属性放到recyclerview中,用来指定他的布局类型,现在我们指定为线性布局,而且为竖直滑动。

4.适配器代码

这个可以说是我们最头疼的了,没关系我们慢慢来看:


我们发现我们的RecyclerView的适配器不再是继承BaseAdapter了,而是继承RecyclerView内置的适配器,然后我们需要创建ViewHolder。这个ViewHolder同样是继承RecyclerView的。


我们指定了ViewHolder类型为我们的MyViewHolder,并且重写了构造方法。为什么能这么写呢?我们点击RecyclerView.Adapter构造方法的源码看一下,

他指定了泛型必须为ViewHolder或者他的子类,所以我们的MyViewHolder可以写进去。

紧接着我们实现了三个方法,分别是onCreateViewHolder、onBindViewHolder和getItemCount。这三个方法中最熟悉的应该是getItemCount了,它跟我们BaseAdapter中的getCount方法功能一模一样。

我们回想一下BaseAdapter需要实现的方法有四个,getCount、getItem、getPosition和getView, 出去getCount,还有三个方法。其实我们只需要看getView,

onCreateViewHolder和onBindViewHolder可以说将getView分成了两个部分,一个是创建ViewHolder,一个是添加数据。我们的getView方法不就是这样吗。


我们首先需要传入数据和上下文。

这是我们重新写完了的onCreateViewHolder方法。只是一个布局传入ViewHolder中,然后返回holder。没什么难度。


我们既然构造器中传入了view,就肯定需要做点什么,我们把布局中的控件全部写进了Viewholder中,然后在构造器中获取。

接着我们看onBindViewHolder方法:


对了,不要忘记我们的getItemCount方法:

我们的onBindViewHolder是将我们的数据传入对应控件中,现在我们来看一下效果如何;

我们现在把他指定成横向滑动:

最后那个boolean类型的参数是指定我们视图起始的位置,如果为true就从末尾到头,false则从头到尾,这个大家自己试一下就知道什么意思了。

光这一点ListView就做不到了,



瀑布流布局实现


只是改了一行代码,吧输入的布局改为了GridLyaout,然后指定为纵向滑动。




设置点击事件

我们首先需要一个接口

然后我们要给点击的item 注册点击事件。

然后需要写一个方法给接口赋值。

最后是我们的实现

效果大家自己试一下,这里就不展示了。

你可能感兴趣的:(2018-05-07—RecyclerView使用)