本文来自网易云社区

作者:吴思博

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变得更高效) (2)的更多相关文章

  1. BRVAH(让RecyclerView变得更高效)(1)

    本文来自网易云社区 作者:吴思博 对于RecyclerView, 我们重复编写着那一个又一个的列表界面,有的要分组,有的要添加广告头部.有的要不同类型item排列.等等需求,主要代码有大部分是重复的, ...

  2. BRVAH(让RecyclerView变得更高效) (3)

    本文来自网易云社区 作者:吴思博 3 实现列表加载动画效果    3.1默认动画 我们只需将自建的 adapter 继承它对应满足需求的 Adapter,然后在 Activity 中实例化,通过ope ...

  3. K2 BPM_当BPM遇上RPA | 企业合规和风险管理从此更高效_全球领先的工作流引擎

    强化企业合规与风险管理已成为全球企业发展的共识,尤其是对于药企.银行.地产这类对于合规性要求高的企业而言,识别预测潜在的管理风险和遵循不断升级的合规义务,是保证企业平稳运行的关键. 如何从流程层面降低 ...

  4. 如何更高效地定制你的bootstrap

    bootstrap已经作为前端开发必不可少的框架之一,应用bootstrap使得我们对布局.样式的设定变得非常简单.但bootstrap提供的默认样式往往不能满足我们的需求,从而定制化bootstra ...

  5. SQL 正则表达式使模式匹配和数据提取变得更容易

    SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易 David Banister 本文讨论: 使用正则表达式进行高效的 SQL 查询 SQL Server 2005 对正则表达式 ...

  6. 如何使代码审查更高效【摘自InfoQ】

      代码审查者在审查代码时有非常多的东西需要关注.一个团队需要明确对于自己的项目哪些点是重要的,并不断在审查中就这些点进行检查. 人工审查代码是十分昂贵的,因此尽可能地使用自动化方式进行审查,如:代码 ...

  7. 25个让Java程序员更高效的Eclipse插件

    Eclipse提供了一个可扩展插件的开发系统.这就使得Eclipse在运行系统之上可以实现各种功能.这些插件也不同于其他的应用(插件的功能是最难用代码实现的).拥有合适的Eclipse插件是非常重要的 ...

  8. TED:如何掌控你的自由时间以及让自己变得更好,这样就能看到爱情应有的样子

    TED:如何掌控你的自由时间以及让自己变得更好,这样就能看到爱情应有的样子 一.<如何掌控你的自由时间> (1)时间管理的传统思维:守时和节省零散的时间.演讲者认为这个观点已经彻底落后. ...

  9. 更强、更稳、更高效:解读 etcd 技术升级的三驾马车

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 陈星宇(宇慕 ...

随机推荐

  1. 使用JDBC进行简单的增删改查

    JDBC为java的基础.用jdbc实现对数据库的增删改查的功能是程序员的基本要求.本例以mysql为例,首先要使用本例需要添加mysql-connector-java-5.1.7-bin.jar包. ...

  2. WORD操作的问题

    最近有个小项目主要是对文档,特别是WORD的操作,读取表格数据存到数据库: 再把数据库的数据读出来写入WORD,下载下来,诸如此类的东西,说来很是简单. 想了想是用什么开发呢? C#常用的,没话说,也 ...

  3. ejb2.0用本地引用提高EJB访问效率

    用本地引用提高EJB访问效率 EJB 1.0和1.1规范只定义了一种在EJB组件中引用另一组件的方法,即通过Bean的远程接口.如果两个Bean都在同一个容器之内,则这种网络开销是不必要的.为解决这个 ...

  4. Nodejs + Jshint自动化静态代码检查

    1.   目的 提交代码前能够自动化静态代码检查,提高代码质量 2.   准备 1.    Nodejs安装: 官方地址:http://nodejs.org/ 安装说明:根据电脑配置下载对应的版本进行 ...

  5. leetcode_1048. Longest String Chain_[DP,动态规划,记忆化搜索]

    1048. Longest String Chain https://leetcode.com/problems/longest-string-chain/ Let's say word1 is a ...

  6. python_113_socket编程

    Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递. 我们知道网络 通信 都 是基于 ip+port 方能 ...

  7. [置顶] IIS应用程序池多工作进程设置及Session共享

    [置顶] IIS应用程序池多工作进程设置及Session共享   在调优iis的时候,朋友分享给我一个特别棒的设置方法步骤,感谢好朋友的分享. IIS应用程序池多工作进程设置及Session共享 1  ...

  8. CVE-2010-3333

    环境 windows xp sp3 office 2003 sp0 windbg ollydbg vmware 12.0 0x00 RTF格式 RTF是Rich TextFormat的缩写,意即富文本 ...

  9. 用Kotlin开发android平台语音识别,语义理解应用(olamisdk)

    Kotlin是由JetBrains创建的基于JVM的编程语言,IntelliJ正是JetBrains的杰作,而android Studio是 基于IntelliJ修改而来的.Kotlin是一门包含很多 ...

  10. 【求助】NdisSend,自定义数据包发送失败?

    做ndis hook的时候,自定义了一个数据包,包结构应该没有问题,填充NDIS_PACKET结构是这样的,先初始化:        NdisAllocatePacketPool(&nStat ...