前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 ConcatAdapter 顺序连接其他 Adapter

使用 ConcatAdapter 顺序连接其他 Adapter

作者头像
Android 开发者
发布2020-11-16 17:29:18
1.1K0
发布2020-11-16 17:29:18
举报
文章被收录于专栏:Android 开发者Android 开发者

ConcatAdapter 是 recyclerview: 1.2.0-alpha 04 中提供的一个新组件,它可以帮我们顺序地组合多个 Adapter,并让它们显示在同一个 RecyclerView 中。这使您可以更好地封装 Adapter。您不必再将许多数据源组合到一个 Adapter 中,从而在减少 Adapter 复杂度的同时也让它们可以被复用。

这方面的一个用例,是在列表头部和底部显示加载状态:?当列表从网络中检索数据时,我们想显示一个加载中的图标;如果出现错误,我们要显示错误信息和重试按钮。

△ 一个带有底部的 RecyclerView,底部显示了加载状态:?加载进度或错误信息
△ 一个带有底部的 RecyclerView,底部显示了加载状态:?加载进度或错误信息

△ 一个带有底部的 RecyclerView,底部显示了加载状态:?加载进度或错误信息

ConcatAdapter 简介

ConcatAdapter 让我们可以顺序显示多个 Adapter 中的内容。例如,假设我们有下面三个 Adapter:

代码语言:javascript
复制
val firstAdapter: FirstAdapter = …
val secondAdapter: SecondAdapter = …
val thirdAdapter: ThirdAdapter = …
val concatAdapter= ConcatAdapter(firstAdapter, secondAdapter, 
     thirdAdapter)
recyclerView.adapter = concatAdapter

RecyclerView 将会按 Adapter 顺序显示所有的项目。

使用不同的适配器可以使您更好地区分列表的每个部分。例如,如果要显示一个头部,可以将其封装在它自己的 Adapter 中,而无需把头部的逻辑与处理列表显示的 Adapter 混杂在一起。

△ RecyclerView 和 Adapter 数据
△ RecyclerView 和 Adapter 数据

△ RecyclerView 和 Adapter 数据

在头部和底部显示加载状态

我们可以在头部或底部显示一个进度条或错误信息。列表成功加载数据后,头部或底部便不应该再显示任何信息。这样一来,它们就可以用 Adapter 实现有 0 个或 1 个项目的列表:

代码语言:javascript
复制
val concatAdapter = ConcatAdapter(headerAdapter, listAdapter, 
    footerAdapter)
recyclerView.adapter?=?concatAdapter

如果头部和底部用的是同一布局、ViewHolder 和 UI 逻辑 (例如: 进度条要何时显示、怎么显示),您可以只实现一个 Adapter,然后创建两个实例: 一个作为头部、一个作为底部。

要获得完整的实现,请查看这里 拉取请求,它添加了:

  • 从?ViewModel 中暴露出来的 LoadState
  • 显示加载状态的头部和底部的布局
  • 头部和底部的 ViewHolder 对象
  • 一个 ListAdapter,它基于 LoadState 显示 1 或 0 个项目,每次 LoadState 有变动的时候,我们会通知相应条目进行改动、插入或移除 (您可以在 拉取请求 中查看相应的代码)。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ConcatAdapter 简介
  • 在头部和底部显示加载状态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com