美文网首页
2018-05-07—RecyclerView使用

2018-05-07—RecyclerView使用

作者: 季白zy | 来源:发表于2018-05-07 18:14 被阅读0次

    大家好,已经有一段时间没有写博客了,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使用

          本文链接:https://www.haomeiwen.com/subject/whdvrftx.html