ViewHolder加载速度优化

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

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

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

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

例如:

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

ViewHolder加载速度优化_第1张图片
链接帖
ViewHolder加载速度优化_第2张图片
文章帖 顶部显示用户信息

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

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

XML文件结构:

//头部结构
//中间的结构
//中间的结构
......//可能很多
//底部结构

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

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

ViewStub使用

你可能感兴趣的:(ViewHolder加载速度优化)