美文网首页
RecyclerView基本概念

RecyclerView基本概念

作者: 小言聊编程 | 来源:发表于2018-07-25 09:40 被阅读0次

    导语:

    RecyclerView是Android 5.0提出的新UI控件,可以用来代替传统的ListView。

    Bugly之前也发过一篇相关文章,讲解了 RecyclerView 与 ListView 在缓存机制上的一些区别:

    Android ListView 与 RecyclerView 对比浅析--缓存机制

    http://mp.weixin.qq.com/s__biz=MzA3NTYzODYzMg==&mid=2653578065&idx=2&sn=25e64a8bb7b5934cf0ce2e49549a80d6&chksm=84b3b156b3c43840061c28869671da915a25cf3be54891f040a3532e1bb17f9d32e244b79e3f&scene=21#wechat_redirect)

    基本概念:

    RecyclerView是Android 5.0提出的新UI控件,位于support-v7包中,可以通过在build.gradle中添加compile 'com.android.support:recyclerview-v7:24.2.1'导入

    为什么出现RecyclerView?

    RecyclerView并不会完全替代ListView(这点从ListView没有被标记为@Deprecated可以看出),两者的使用场景不一样。但是RecyclerView的出现会让很多开源项目被废弃,例如横向滚动的ListView, 横向滚动的GridView, 瀑布流控件,因为RecyclerView能够实现所有这些功能。

    比如有一个需求是屏幕竖着的时候的显示形式是ListView,屏幕横着的时候的显示形式是2列的GridView,此时如果用RecyclerView,则通过设置LayoutManager一行代码实现替换。

    ListView & RecyclerView

    1.addHeaderView(), addFooterView()添加头视图和尾视图。

    2.通过”android:divider”设置自定义分割线。

    3.setOnItemClickListener()setOnItemLongClickListener()设置点击事件和长按事件

    这些功能在RecyclerView中都没有直接的接口,要自己实现(虽然实现起来很简单),因此如果只是实现简单的显示功能,ListView无疑更简单。

    RecyclerView相比ListView,有一些明显的优点:

    默认已经实现了View的复用,不需要类似if(convertView == null)的实现,而且回收机制更加完善。

    默认支持局部刷新。

    容易实现添加item、删除item的动画效果。

    容易实现拖拽、侧滑删除等功能。

    RecyclerView是一个插件式的实现,对各个功能进行解耦,从而扩展性比较好。

    标准用法:

    RecyclerView的标准实现步骤如下:

    创建Adapter:创建一个继承RecyclerView.Adapter<VH>的Adapter类(VH是ViewHolder的类名),记为NormalAdapter。

    创建ViewHolder:在NormalAdapter中创建一个继承RecyclerView.ViewHolder的静态内部类,记为VH。ViewHolder的实现和ListView的ViewHolder实现几乎一样。

    在NormalAdapter中实现:

    VH onCreateViewHolder(ViewGroup parent, int viewType): 映射Item Layout Id,创建VH并返回。

    void onBindViewHolder(VH holder, int position): 为holder设置指定数据。

    int getItemCount(): 返回Item的个数。

    可以看出,RecyclerView将ListView中getView()的功能拆分成了onCreateViewHolder()onBindViewHolder()

    更多信息查看:(http://www.jianshu.com/p/16712681731e)

    相关文章

      网友评论

          本文标题:RecyclerView基本概念

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