BRVAH(让RecyclerView变得更高效)

Posted zyfd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BRVAH(让RecyclerView变得更高效) 相关的知识,希望对你有一定的参考价值。

本文来自网易云社区

作者:吴思博


1.2 宫格和列表的混排样式

关于 Grid 和List 的混排样式,Grid 样式是一行有多个,而 List样式是一行只有一个。 我们可以把 List 样式看成是Grid 样式,它就相当于把一个 Grid 的 item 拉长了的样子。

技术分享图片

列表与网格混排的布局效果,我们可以创建 adapter 继承 BaseMultiItemQuickAdapter添加对应 item 类型的布局文件,也可以在 Activity中创建GridLayoutManager对象,设置spanSize属性,通过 Adapter 的setSpanSizeLookup()方法设置每种item类型对应的spanSize。设置Recyclerview的addItemDecoration()方法设置添加分割线或设置 item 间距。

 

在创建GridLayoutManager对象时, spanSize的参数需要设置,它的作用就是使原来一个item占满一行变为可以最多三个 item 占满一行。

而设置setSpanSizeLookup()方法返回的是对应每种item类型返回具体的横跨大小。比如代码中TYPE_GRID类型的item在设置的spanSize是 1,而 GridLayoutManager 设置的 spanSize 是 3,那么该类型的item 就会以 3 个 item 占满一行,相当于每个 item 占一行的 1/3。

 

代码片段:

技术分享图片

在我们使用addItemDecoration()添加分割线的方法中对这种混排的列表设置item间距的时候,在 getItemOffsets()方法里,通过GridLayoutManager.LayoutParams获取spanSize 来确定 item 类型设置对应间距, 其中spanIndex表示当前行item对应的下标位置,从左到右依次从 0 开始。

 

1.3 Recyclerview嵌套 Recyclerview 的复杂布局

我们“文学漫画”产品中,那些地方用到这种布局?例如蜗牛的领读ReadTrendFragment、 Lofter发现音乐Fragment、 云阅读书店BookStoreFragment。

 

技术分享图片技术分享图片

    

蜗牛的领读ReadTrendFragment                                              Lofter发现的音乐Fragment

 

这种界面布局样式,最外面一个RecyclerView,它里面嵌套一个 RecyclerView。继承BaseMultiItemQuickAdapter 在重写的 convert() 方法中实例化子 Recyclerview。

技术分享图片

需要注意的是Recyclerview 嵌套 Recyclerview 会出现子 Recyclerview 抢焦点的问题, 导致界面顶部部分控件被挤出, 只需在最外面的Recyclerview 的包裹容器中设置属性 

Android:descendantFocusability="blocksDescendants" 即可。

 

2. 实现了点击监听事件

  技术分享图片

BRVAH为我们提供好了全面的 item 和 item 子 View 的监听事件,我们只需在继承它提供的 Adapter 的基础上,通过adapter 来调用对应的监听。 设置监听子 View 前,我们需要在 adapter 中对应的 item 的子 View 注册对应的监听事件。

 

2.1对于 item 的监听事件处理

   直接在 Activity 中添加 item 点击事件,和listview一样。

技术分享图片

item 长按监听事件

技术分享图片


2.2对 item 中子 View 的监听事件处理

首先需要在adapter 中,注册子 View 的监听事件。

技术分享图片

技术分享图片

2.3 也可以通过viewHolder.getView(viewId)获取该控件,再设置监听。

技术分享图片

 

网易云免费体验馆,0成本体验20+款云产品! 

更多网易研发、产品、运营经验分享请访问网易云社区

相关文章:
【推荐】 知物由学 | 你真的了解网络安全吗?
【推荐】 “代码变更覆盖率”在后端测试中的实践
【推荐】 实战案例:如何快速打造1000万+播放量的抖音网红?














以上是关于BRVAH(让RecyclerView变得更高效) 的主要内容,如果未能解决你的问题,请参考以下文章

BRVAH(让RecyclerView变得更高效)

BRVAH(让RecyclerView变得更高效)

Android使用Room操作SQLite数据库让其变得无比高效和简洁(进一步完善用RecyclerView显示数据库中的数据)

我怎样才能让RecyclerView变得更流畅?

BRVAH官方使用指南

Android 使用Room操作SQLite数据库让其变得无比高效和简洁(前一篇文章的完善)