美文网首页
ViewHolder加载速度优化

ViewHolder加载速度优化

作者: 比尔王BillWang | 来源:发表于2017-06-27 17:49 被阅读0次

    在新闻类APP的开发过程中,肯定会遇到很多上下部分布局相似,但是中间的功能却有些区别的需求。比如同样是一条新闻,有些新闻有视频、有些新闻有图片、有些新闻又只有文字。

    按照自己项目中的情况,有好几种类型的控件都是放在了一个VIewHolder中。这样一来如果使用同一种ViewHolder,RecyclerView在复用的时候就会出现一些情况,本身没有视频的ViewHolder出现了视频控件、本身只有文字的新闻会出现图片,而且还有可能ViewHolder在初始化的时候明明用不到视频控件,却对它进行了初始化,导致浪费了时间,造成卡顿。

    在RecyclerView 中是根据ViewHolder来进行复用的,如果一种ViewHolder中的控件足够少,那么它的初始化时间也就少。

    至于担心太多类型的ViewHolder导致加载速度慢的问题,可以自己建一个JAVA测试下switch(int)的速度。

    例如:

    信息流页面经常会有一些类似的结构

    链接帖 文章帖 顶部显示用户信息

    相似的地方:
    顶部都有用户信息、标题、内容。
    底部是时间信息、评论数、阅读数

    不同的地方:
    中间可能有图片、链接帖信息、文件帖信息、视频等等结构。

    XML文件结构:

    <include/>//头部结构
    <ViewStub/>//中间的结构
    <ViewStub/>//中间的结构
    ......//可能很多
    <include/>//底部结构
    

    在使用的时候顶部和底部统一处理(可以使用继承的方式),然后不同的ViewHolder初始化不同的ViewStub。

    这样不同的ViewHolder能够用统一的布局,在修改上边与下边布局的时候不会影响到中间,并且也不会漏改文件。同时,中间的布局只有对应的ViewHolder才会初始化,并不占用内存。

    ViewStub使用

    相关文章

      网友评论

          本文标题:ViewHolder加载速度优化

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