RecyclerCollectionComponent

RecyclerView 是包含滚动项目列表的任何 Android 应用程序的基本构建块之一。 Litho 建议使用 RecyclerCollectionComponent 和 Sections 轻松构建滚动列表。借助这些 API,您可以构建从简单、同类数据的列表到复杂、异构的列表,支持多个数据源,同时可以利用例如异步布局和增量挂载等功能。

创建一个 RecyclerCollectionComponent

您可以像框架中的任何其他组件使用RecyclerCollectionComponent,并将其作为布局中的子项添加。

@OnCreateLayout
static Component onCreateLayout(
    final ComponentContext c) {
  return RecyclerCollectionComponent.create(c)
      .section(createSection())
      .build();
}

这段代码最终将渲染成一个 RecyclerView ,每一行的内容由 Section 提供。您可以通过了解库中的某些构建模块获得有关如何创建 Section 的更多信息。

一系列功能

RecyclerCollectionComponent 包含许多用于处理列表的实用功能。可以在 javadoc 中它可接收的属性列表,但这里有一些显着的特点:

水平列表

RecyclerCollectionComponent 使用 RecyclerConfiguration prop来确定要使用的布局管理器。默认情况下,如果未指定此 prop,它将使用名为 ListRecyclerConfiguration 的 RecyclerConfiguration 实现,该实现将创建一个垂直方向的 LinearLayoutManager,供RecyclerCollectionComponent 使用。

对于水平布局,您可以传入一个水平方向ListRecyclerConfiguration:

也可以使用 GridRecyclerConfiguration 创建一个网格列表。

对齐方式

在水平滚动列表中,RecyclerCollectionComponent 的对齐模式也可以通过 ListRecyclerConfiguration 进行配置:

其他对齐选项是SNAP_NONE,SNAP_TO_END和SNAP_TO_CENTER。

设置水平RecyclerCollectionComponent的高度

水平的 RecyclerCollectionComponent 通过接收高度 prop 来设置高度。如果未指定高度,则高度为 0 。如果您不知道RecyclerCollectionComponent的高度,则可以通过启用 canMeasure prop 来配置让它自行决定其高度。这会测量 Sections 层次结构中的第一个子组件的高度,并把它作为整个 RecyclerCollectionComponent 的高度。

只要有可能,应该在 RecyclerCollectionComponent 上指定一个确切的高度,以避免额外测量确定其高度。

下拉刷新

RecyclerCollectionComponen t默认启用下拉刷新,并向底层的 Recycler 发送一个事件处理器,以触发 SectionTree 的刷新。要禁用此功能,您需要将 disablePTR prop 设置为true:

Loading, Empty, and error 的处理

通过 Section API,还可以通过 Loading EventsServices 来进行数据获取。 RecyclerCollectionComponent 可以监听这些加载事件,并会做出相应的响应。通过 prop loadingComponent,emptyComponent和errorComponent,可以指定在获取数据时发生某些事情时要显示的内容:

  • loadingComponent:正在加载数据,列表中没有任何内容

  • emptyComponent:数据已完成加载并没有任何可显示的内容。

  • errorComponent:数据加载失败,列表中没有任何内容。

你可以在此处查看 RecyclerCollectionComponent 支持的其他 props 。

Last updated