Recyclerview

Recyclerview

Recyclerview

用户指南 代码示例

API 参考

androidx.recyclerview.selection

androidx.recyclerview.widget

在界面中显示大量数据,同时最大限度地减少内存使用。

此表列出了 androidx.recyclerview 组中的所有 artifact。

Artifact

稳定版

候选版本

Beta 版

Alpha 版

recyclerview

1.4.0

-

-

-

recyclerview-selection

1.2.0

-

-

-

此库上次更新时间:2025 年 5 月 20 日声明依赖项

要添加对 RecyclerView 的依赖项,您必须将 Google Maven 仓库添加到您的项目。如需了解详情,请阅读Google 的 Maven 仓库。

在您的应用或模块的 build.gradle 文件中添加您所需 artifact 的依赖项

Groovy

dependencies {

implementation "androidx.recyclerview:recyclerview:1.4.0"

// For control over item selection of both touch and mouse driven selection

implementation "androidx.recyclerview:recyclerview-selection:1.2.0"

}

Kotlin

dependencies {

implementation("androidx.recyclerview:recyclerview:1.4.0")

// For control over item selection of both touch and mouse driven selection

implementation("androidx.recyclerview:recyclerview-selection:1.2.0")

}

如需了解有关依赖项的更多信息,请参阅添加构建依赖项。

反馈

您的反馈有助于 Jetpack 变得更好。如果您发现新问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中的现有问题。您可以通过点击星形按钮为您已发现的问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档。

版本 1.4

版本 1.4.0

2025 年 1 月 15 日

androidx.recyclerview:recyclerview:1.4.0 已发布。版本 1.4.0 包含这些提交。

自 RecyclerView 1.3.2 以来的重要变更

自适应刷新率支持:RecyclerView 现在通过 OverScroller 滚动时(例如从快速滑动或平滑滚动中稳定下来时)会调用 setFrameContentVelocity。(I8f8a4)

版本 1.4.0-rc01

2024 年 9 月 18 日

androidx.recyclerview:recyclerview:1.4.0-rc01 已发布,自 1.4.0-alpha02/ 以来没有变化。版本 1.4.0-rc01 包含这些提交。

自 1.3.2 以来的变更

兼容性说明:此版本只能针对 API 35 (Vanilla Ice Cream) SDK 或更高版本进行编译。如果您在升级时看到 AGP (Android Gradle Plugin) 警告,可以将其抑制。

新功能

自适应刷新率支持:RecyclerView 现在通过 OverScroller 滚动时(例如从快速滑动或平滑滚动中稳定下来时)会调用 setFrameContentVelocity。(I8f8a4)

API 变更

添加 RecyclerView$LayoutManager#isLayoutReversed API。(I4970e)

其他变更

移除了对新平台 API 访问的手动概要,因为在使用 AGP 7.3 或更高版本(例如 R8 3.3 版)的 R8 时,以及在使用 AGP 8.1 或更高版本(例如 D8 8.1 版)的所有构建中,这会通过 API 建模自动发生。不使用 AGP 的客户端建议更新到 D8 8.1 版或更高版本。有关更多详情,请参阅本文。(Ia60e0, b/345472586)

将项目视图类型添加到 RecyclerView 绑定/创建跟踪部分,并将 RV 预取标记为“强制 - 下一帧所需”,如果它们预计将被下一帧使用,因此应尽快开始工作。(I8ec3e, b/309523615)

将 compileSdk 更新到 35(详见上方“兼容性说明”)。5dc41be

版本 1.4.0-beta01

2024 年 8 月 21 日

androidx.recyclerview:recyclerview:1.4.0-beta01 已发布,自 1.4.0-alpha02 以来没有变化。版本 1.4.0-beta01 包含这些提交。

兼容性说明:此版本只能针对 API 35 (Vanilla Ice Cream) SDK 或更高版本进行编译。如果您在升级时看到 AGP (Android Gradle Plugin) 警告,可以将其抑制。

版本 1.4.0-alpha02

2024 年 8 月 7 日

androidx.recyclerview:recyclerview:1.4.0-alpha02 已发布。版本 1.4.0-alpha02 包含这些提交。

兼容性说明:此版本只能针对 API 35 (Vanilla Ice Cream) SDK 或更高版本进行编译。如果您在升级时看到 AGP (Android Gradle Plugin) 警告,可以将其抑制。

新功能

可变刷新率支持:RecyclerView 现在通过 OverScroller 滚动时(例如从快速滑动或平滑滚动中稳定下来时)会调用 setFrameContentVelocity。(I8f8a4)

API 变更

废弃的 ViewCompat.LAYOUT_DIRECTION_ API (I51710, b/317055535)

添加 RecyclerView$LayoutManager#isLayoutReversed API。(I4970e)

其他变更

移除了对新平台 API 访问的手动概要,因为在使用 AGP 7.3 或更高版本(例如 R8 3.3 版)的 R8 时,以及在使用 AGP 8.1 或更高版本(例如 D8 8.1 版)的所有构建中,这会通过 API 建模自动发生。不使用 AGP 的客户端建议更新到 D8 8.1 版或更高版本。有关更多详情,请参阅本文。(Ia60e0, b/345472586)

将项目视图类型添加到 RecyclerView 绑定/创建跟踪部分,并将 RV 预取标记为“强制 - 下一帧所需”,如果它们预计将被下一帧使用,因此应尽快开始工作。(I8ec3e, b/309523615)

将 compileSdk 更新到 35(详见上方“兼容性说明”)。5dc41be

外部贡献

由于 minSdk 中提供了 GestureDetector,因此 GestureDetectorCompat 现已废弃。(Icc4cd)

版本 1.4.0-alpha01

2023 年 10 月 18 日

androidx.recyclerview:recyclerview:1.4.0-alpha01 已发布。版本 1.4.0-alpha01 包含这些提交。

API 变更

添加 RecyclerView$LayoutManager#isLayoutReversed API。(I4970e)

bug 修复

修复了动画过程中偶发性崩溃的 bug (I42f22b)(也包含在 1.3.2 中)

版本 1.3.2

版本 1.3.2

2023 年 10 月 18 日

androidx.recyclerview:recyclerview:1.3.2 已发布。版本 1.3.2 包含这些提交。

bug 修复

修复了动画过程中偶发性崩溃的 bug。(I42f22b)

版本 1.3.1

版本 1.3.1

2023 年 7 月 26 日

androidx.recyclerview:recyclerview:1.3.1 已发布,自 1.3.1-rc01 以来没有变化。版本 1.3.1 包含这些提交。

有关先前版本的版本说明,请参阅我们的版本说明页面

版本 1.3.1-rc01

2023 年 5 月 24 日

androidx.recyclerview:recyclerview:1.3.1-rc01 已发布。版本 1.3.1-rc01 包含这些提交。

ViewPager2 用户在更新到此版本的 RecyclerView 时,必须更新到至少 1.1.0-beta02 以避免崩溃。

API 变更

添加新的 setDebugAssertionsEnabled 和 setVerboseLoggingEnabled 方法,可帮助调试应用中与 RecyclerView 相关的问题。(I514b9)

bug 修复

通过在调用 onBind 时暂时重新附加暂时分离的视图,修复了 ViewTreeLifecycleOwner(包括 ComposeView)用户崩溃的问题。(I7244f2c, b/265347515, b/283288295)

版本 1.3.0

版本 1.3.0

2023 年 3 月 8 日

androidx.recyclerview:recyclerview:1.3.0 已发布,自 1.3.0-rc01 以来没有变化。版本 1.3.0 包含这些提交。

自 1.2.0 以来的重要变更

此版本包含与 Jetpack Compose 配合使用时的性能改进(以前包含在1.3.0-alpha02 和 1.3.0-beta01 中)。如果您使用的是 Compose 1.2.0-beta02 或更高版本,并且使用了先前互操作性指南中描述的 MyComposeAdapter 和 DisposeOnViewTreeLifecycleDestroyed ViewCompositionStrategy,您应该移除这些,因为它们不再比默认状态有所改进。

添加了新的 ConcatAdapter.getWrappedAdapterAndPosition 方法,以便在没有 ViewHolder 的情况下(例如 SpanSizeLookup),检索包装的适配器信息。(I2bd4c, b/191543920)

版本 1.3.0-rc01

2022 年 9 月 21 日

androidx.recyclerview:recyclerview:1.3.0-rc01 已发布。版本 1.3.0-rc01 包含这些提交。

自上次发布以来无变化

版本 1.3.0-beta02

2022 年 8 月 10 日

androidx.recyclerview:recyclerview:1.3.0-beta02 已发布。版本 1.3.0-beta02 包含这些提交。

API 变更

移除了 1.3.0-beta01 中添加的可空性注解,因为它们对于 Kotlin 用户而言是重要的源代码不兼容变更 (I7a258,I1557e6,I8db76)

版本 1.3.0-beta01

2022 年 6 月 29 日

androidx.recyclerview:recyclerview:1.3.0-beta01 已发布。版本 1.3.0-beta01 包含这些提交。

新功能

此 Beta 版发布包含与 Jetpack Compose 配合使用时的性能改进(以前包含在1.3.0-alpha02 中)。如果您使用的是 Compose 1.2.0-beta02 或更高版本,并且使用了先前互操作性指南中描述的 MyComposeAdapter 和 DisposeOnViewTreeLifecycleDestroyed ViewCompositionStrategy,您应该移除这些,因为它们不再比默认状态有所改进。

API 变更

为多个方法和参数添加了可空性注解,以改进 Java 用户的 Lint 警告和 Kotlin 用户的互操作性。这可能对某些 Kotlin 用户而言是源中断性变更,并可能导致某些 Java 用户出现额外的 Lint 警告/错误。(I61829, b/236487044; Ia0b6f; I6f119, b/236487209; Ibe1de, b/236487210)

bug 修复

通过设置无障碍节点信息类名,确保网格被无障碍服务视为网格。(I12812)

版本 1.3.0-alpha02

2022 年 4 月 6 日

androidx.recyclerview:recyclerview:1.3.0-alpha02 已发布。版本 1.3.0-alpha02 包含这些提交。

API 变更

为未来的 SDK 添加了实验性 BuildCompat 方法 (Iafd82, b/207528937)

添加了新的 ConcatAdapter.getWrappedAdapterAndPosition 方法,以便在没有 ViewHolder 的情况下(例如 SpanSizeLookup),检索包装的适配器信息。(I2bd4c, b/191543920)

bug 修复

与新的 AndroidX PoolingContainer 库集成 (Ib89d2)

调整无障碍操作的滚动距离 (If74ae)

版本 1.3.0-alpha01

2021 年 9 月 15 日

androidx.recyclerview:recyclerview:1.3.0-alpha01 已发布。版本 1.3.0-alpha01 包含这些提交。

新功能

添加了对弹性过滚 RecyclerView 的支持。(Iab877)

RecyclerView-Selection 版本 1.2.0

版本 1.2.0

2025 年 5 月 20 日

androidx.recyclerview:recyclerview-selection:1.2.0 已发布。版本 1.2.0 包含这些提交。

自 1.1.0 以来的重要变更

修复了鼠标小幅度移动导致点击变成拖动的 bug。

修复了在 KeyProvider 中,当条目尚未回收时,键/位置映射丢失的问题。

版本 1.2.0-rc01

2025 年 5 月 7 日

androidx.recyclerview:recyclerview-selection:1.2.0-rc01 已发布。版本 1.2.0-rc01 包含这些提交。

bug 修复

修复了鼠标小幅度移动导致点击变成拖动的 bug。(Ie9106)

版本 1.2.0-beta01

2025 年 4 月 9 日

androidx.recyclerview:recyclerview-selection:1.2.0-beta01 已发布。版本 1.2.0-beta01 包含这些提交。

API 变更

废弃的 ViewCompat.LAYOUT_DIRECTION_ API (I51710, b/317055535)

bug 修复

此库现在使用JSpecify 可空性注解,这些注解是类型使用。Kotlin 开发者应使用以下编译器参数来强制执行正确用法:-Xjspecify-annotations=strict(从 Kotlin 编译器 2.1.0 版开始,这是默认设置)。(I03b80, b/326456246)

版本 1.2.0-alpha01

2021 年 5 月 5 日

androidx.recyclerview:recyclerview-selection:1.2.0-alpha01 已发布。版本 1.2.0-alpha01 包含这些提交。

bug 修复

修复了在 KeyProvider 中,当条目尚未回收时,键/位置映射丢失的问题。(b/145767095)

版本 1.2.1

版本 1.2.1

2021 年 6 月 2 日

androidx.recyclerview:recyclerview:1.2.1 已发布。版本 1.2.1 包含这些提交。

bug 修复

ConcatAdapter 中的 ViewHolder 现在在 onViewRecycled 回调中查询时会返回正确的适配器位置。(b/187339376)

版本 1.2.0

版本 1.2.0

2021 年 4 月 7 日

androidx.recyclerview:recyclerview:1.2.0 已发布。版本 1.2.0 包含这些提交。

自 1.1.0 以来的主要变更

ConcatAdapter:这个新适配器允许您轻松地在同一个 RecyclerView 上连接多个适配器。有关更多信息,请参阅博客文章。

作为此更改的一部分,ViewHolder.getAdapterPosition 已废弃,并替换为两个新方法

getBindingAdapterPosition 返回相对于绑定该项的 Adapter 的位置。

getAbsoluteAdapterPosition 返回相对于整个 RecyclerView 的位置。

惰性状态恢复:RecyclerView Adapter 现在可以延迟状态恢复,直到其内容加载完毕。有关更多详情,请参阅文档。

版本 1.2.0-rc01

2021 年 3 月 24 日

androidx.recyclerview:recyclerview:1.2.0-rc01 已发布。版本 1.2.0-rc01 包含这些提交。

bug 修复

ConcatAdapter.Config.Builder 现在具有与 Config.DEFAULT 匹配的默认值 (b/157169835)

版本 1.2.0-beta02

2021 年 2 月 24 日

androidx.recyclerview:recyclerview:1.2.0-beta02 已发布。版本 1.2.0-beta02 包含这些提交。

bug 修复

修复了一个问题:顶部填充导致右侧过滚动发光向上移动到填充区域,而不是向下以遵守填充。(I6b61d, b/118399122)

版本 1.2.0-beta01

2020 年 12 月 2 日

androidx.recyclerview:recyclerview:1.2.0-beta01 已发布,自 1.2.0-alpha06 以来没有变化。版本 1.2.0-beta01 包含这些提交。

版本 1.2.0-alpha06

2020 年 10 月 1 日

androidx.recyclerview:recyclerview:1.2.0-alpha06 已发布。版本 1.2.0-alpha06 包含这些提交。

新功能

添加了对添加多个 RecyclerListener 的支持。(I70ad8, b/145767095)

API 变更

废弃了 RecyclerView.setRecyclerListener(RecyclerListener)。(I70ad8, b/145767095)

版本 1.2.0-alpha05

2020 年 7 月 22 日

androidx.recyclerview:recyclerview:1.2.0-alpha05 已发布。版本 1.2.0-alpha05 包含这些提交。

bug 修复

修复了一个问题:如果 RecyclerView 只有一个项目且该项目处于焦点状态,则向前或向后聚焦不会移动焦点。(6f36b3)

修复了 StaggeredGridLayoutManager 中的 ArrayIndexOutOfBoundsException (49b601, b/122303625, b/74877618, b/160193663, b/37086625)

修复了一个测量 bug:在特定情况下,RecyclerView 可能会不恰当地不显示其子视图。(89040c, b/138734786)

外部贡献

感谢 Kolin Krewinkel 代表 Facebook 提供的贡献!

版本 1.2.0-alpha04

2020 年 6 月 24 日

androidx.recyclerview:recyclerview:1.2.0-alpha04 已发布。版本 1.2.0-alpha04 包含这些提交。

API 变更

MergeAdapter 已重命名为 ConcatAdapter,以避免与不同的数据合并行为产生混淆 (c0540c, b/158019211)。

bug 修复

改进了所有可见项目移除时的自动滚动功能 (fe8670, b/154124815)

版本 1.2.0-alpha03

2020 年 4 月 29 日

androidx.recyclerview:recyclerview:1.2.0-alpha03 已发布。版本 1.2.0-alpha03 包含这些提交。

新功能

RecyclerView 现在有一个 nestedScrollBy 方法,允许与嵌套滚动协作的程序化滚动:(Ibaa58)

版本 1.2.0-alpha02

2020 年 4 月 1 日

androidx.recyclerview:recyclerview:1.2.0-alpha02 已发布。版本 1.2.0-alpha02 包含这些提交。

此版本及更高版本的 RecyclerView 与较低版本的 ViewPager2 不兼容。如果您当前使用的是 androidx.viewpager2:viewpager2:1.0.0 或更低版本,请务必更新到 androidx.viewpager2:viewpager2:1.1.0-alpha01。

新功能

MergeAdapter

MergeAdapter:一个新的 RecyclerView 适配器,可以线性组合多个适配器。

MyAdapter adapter1 = ...;

AnotherAdapter adapter2 = ...;

MergeAdapter merged = new MergeAdapter(adapter1, adapter2);

recyclerView.setAdapter(mergedAdapter);

对于上述示例,MergeAdapter 将先呈现 adapter1 中的项目,然后呈现 adapter2 中的项目。

RecyclerView.Adapter 惰性状态恢复:

在 RecyclerView.Adapter 类中添加了一个新 API,允许 Adapter 控制何时应恢复布局状态。

例如,您可以调用

myAdapter.setStateRestorationStrategy(StateRestorationStrategy.WHEN_NOT_EMPTY);

使 RecyclerView 在 Adapter 不为空之前等待,然后才恢复滚动位置。

CollectionInfo 和 CollectionItemInfo 将不再默认填充。

如果您希望无障碍服务(例如 Talkback)继续向用户指示计数和项目索引,您将需要自行填充 CollectionInfo 和 CollectionItemInfo。

这些对象不再在框架中填充,因为框架无法确定用户感知的项目数量(例如分隔符、标题或表示多个感知项目的 RecyclerView 项目)。

bug 修复

当视口大小改变时,RecyclerView 现在避免在视口之外的视图上进行锚定

修复了 DiffUtil 中的一个 bug,该 bug 可能会在第一个列表中的原始项在第二个列表中多次重复时错误地计算差异。(b/123376278)

版本 1.2.0-alpha01

2019 年 12 月 18 日

androidx.recyclerview:recyclerview:1.2.0-alpha01 已发布。版本 1.2.0-alpha01 包含这些提交。

bug 修复

修复了 FastScroller 与 RTL 绘图和触摸精度相关的次要问题 (b/143789932, aosp/1130438)

修复了 ItemTouchHelper 动画运行时从 RecyclerView 移除 ItemTouchHelper 时发生的崩溃 (b/140447176, aosp/1167575)

版本 1.1.0

版本 1.1.0

2019 年 11 月 20 日

androidx.recyclerview:recyclerview:1.1.0 已发布。版本 1.1.0 包含这些提交。

自 1.0.0 以来的重要变更

PagerSnapHelper 和 LinearSnapHelper 现在会考虑 RecyclerView 的填充,无论 clipToPadding 的值如何 (b/139452422, b/139012032, aosp/1103182, aosp/1106715, aosp/1130728)

RecyclerView.setLayoutTransition(LayoutTransition) 已正式废弃,当使用非 null 值调用时将抛出 IllegalArgumentException。请改用 RecyclerView.setItemAnimator(ItemAnimator)。(aosp/839414)

aosp/723649: RecyclerView 现在实现了 NestedScrollingChild3,使其能够获知所有嵌套滚动父级何时已停止消耗嵌套滚动距离。如果开发者代码当前重写了 RecyclerView.onNestedScroll(View, int, int, int, int, int),它可能将不再被调用,而应重写 RecyclerView.onNestedScroll(View, int, int, int, int, int, int[])。

RecyclerView 现在有一个默认样式属性:recyclerViewStyle,允许在您的主题中设置默认样式

ViewCompat 无障碍操作 API 不再破坏 RecyclerView ItemDelegate。

LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) 可以被重写,以自定义在关联的 RecyclerView 两侧应添加多少额外布局空间。( aosp/931259 )

新增了一个 smoothScrollBy 的重载版本:RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration),它允许你指定动画应持续的毫秒时长。( aosp/952807 )

版本 1.1.0-rc01

2019年10月23日

androidx.recyclerview:recyclerview:1.1.0-rc01 已发布。版本 1.1.0-rc01 包含以下提交。

bug 修复

修复了重写 RecyclerViewAccessibilityDelegate.ItemDelegate 时出现的“应用无响应”问题。( aosp/1138057, aosp/1133434 )

版本 1.1.0-beta05

2019年10月9日

androidx.recyclerview:recyclerview:1.1.0-beta05 已发布。版本 1.1.0-beta05 包含以下提交。

API 变更

继 aosp/1106715 和 aosp/1103182 之后,现在 LinearSnapHelper 和 PagerSnapHelper 将返回位于 RecyclerView 边界中心(减去内边距)的视图,无论 clipToPadding 的值如何。( aosp/1130728 )

bug 修复

修复了 RecyclerView 为其子项生成重复无障碍节点的问题。( aosp/1130618 )

修复了 RecyclerView 中虚拟无障碍层级结构不起作用的问题。

修复了自定义 ItemDelegate 未被使用的问题。

版本 1.1.0-beta04

2019年9月5日

androidx.recyclerview:recyclerview:1.1.0-beta04 已发布。此版本中包含的提交可以在此处找到。

bug 修复

PagerSnapHelper 和 LinearSnapHelper 现在会考虑 RecyclerView 的内边距,无论 clipToPadding 的值如何。( b/139452422, b/139012032, aosp/1103182, aosp/1106715 )

修复了当嵌套预滚动导致 NestedScrollingParent 滚动时,RecyclerView 未阻止触摸拦截的错误。( b/138668210, aosp/1105373 ) 这对 ViewPager2 等库有益。

RecyclerView 现在在分派嵌套预滚动之前始终进入 SCROLL_STATE_DRAGGING 状态。( aosp/1105373 )

嵌套预滚动不再在手势超出触摸范围之前执行。( b/139530818, aosp/1105373 )

当 RecyclerView 无法向该方向滚动时,分派给嵌套预滚动的 dx 和 dy 参数将归零。( aosp/1105373 )

版本 1.1.0-beta03

2019年8月15日

androidx.recyclerview:recyclerview:1.1.0-beta03 已发布。此版本中包含的提交可以在此处找到。

API 变更

RecyclerView 现在通过 View.onScrollChanged(int l, int t, int oldl, int oldt) 分派滚动距离,以便无障碍服务能够准确地接收到滚动变更通知。( aosp/1007823 )

bug 修复

修复了与 RecyclerView 和无障碍功能相关的主要堆栈溢出错误。( aosp/1099577 )

版本 1.1.0-beta02

2019年8月7日

androidx.recyclerview:recyclerview:1.1.0-beta02 已发布。此版本中包含的提交可以在此处找到。

新功能

RecyclerView 现在有一个默认样式属性:recyclerViewStyle,允许在您的主题中设置默认样式

bug 修复

修复了当 RecyclerView 滚动导致 NestedScrollingParent 滚动时,RecyclerView 未阻止触摸拦截的错误。( b/131115697, aosp/1055911 )

版本 1.1.0-beta01

2019年7月2日

androidx.recyclerview:recyclerview:1.1.0-beta01 已发布。此版本中包含的提交可以在此处找到。

新功能

当滚动通过无障碍事件发起时,RecyclerView 现在会参与嵌套滚动。( aosp/973584 )

版本 1.1.0-alpha06

2019年6月5日

androidx.recyclerview:recyclerview:1.1.0-alpha06 和 androidx.recyclerview:recyclerview-selection:1.1.0-alpha06 已发布。此版本中包含的提交可以在此处找到。

新功能

新增了一个 smoothScrollBy 的重载版本:RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration),它允许你指定动画应持续的毫秒时长。( aosp/952807 )

API 变更

GridLayoutManager 和 StaggeredGridLayoutManager 不再为无障碍目的自动将全跨度项标记为标题。( aosp/969703 )

在 recyclerview-selection 中保留选择顺序(按创建时间)。( aosp/937279 )

bug 修复

修复了 RecyclerView 在嵌套滚动情况下以不正确速度甩动的问题。( aosp/961642 )

为 recyclerview-selection 添加了稳定性改进。( aosp/960213, aosp/926296 )

版本 1.1.0-alpha05

2019年5月7日

androidx.recyclerview:recyclerview:1.1.0-alpha05 和 androidx.recyclerview:recyclerview-selection:1.1.0-alpha05 已发布。此版本中包含的提交可以在此处找到。

新功能

LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) 可以被重写,以自定义在关联的 RecyclerView 两侧应添加多少额外布局空间。( aosp/931259 )

API 变更

添加 API 以检索 DividerItemDecoration 可绘制对象。( aosp/937282 )

弃用 LinearLayout.getExtraLayoutSpace(RecyclerVew.State),取而代之的是一种允许在两侧具有自定义额外布局空间的新机制。新方法是 LinearLayout.calculateExtraLayoutSpace(RecyclerView.state, int[])。( aosp/931259 )

bug 修复

清理了手势选择。( aosp/940781 )

保留选择顺序(按创建时间)。( b/128455535 )

版本 1.1.0-alpha04

2019年4月3日

androidx.recyclerview:recyclerview:1.1.0-alpha04 已发布。此版本中包含的提交可以在此处找到。

bug 修复

RV OnItemTouchListener 之前无法拦截 ACTION_UP,阻止 OnItemTouchListener 阻止其他代码响应 ACTION_UP。现在此问题已修复:( aosp/916137 )

版本 1.1.0-alpha03

2019年3月13日

androidx.recyclerview:recyclerview:1.1.0-alpha03 已发布。此版本中包含的完整提交列表可以在此处找到。

新功能

GridLayoutManager:选择启用,更高分辨率的 GridLayoutManager 滚动条尺寸估算。( aosp/838836 )

使用 span 信息估算 GridLayoutManager 的滚动条尺寸。

要启用此功能,请调用 GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) 并传入 true。

有关更多信息,请参阅 GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) 的文档。

bug 修复

无障碍功能:存在一个 bug,当 ViewHolder 被回收并重新绑定后,与 RecyclerView 的 RecyclerViewAccessibilityDelegate 关联的 ItemDelegate 未与 ViewHolder 的 itemView 关联,导致无障碍功能中断。此问题现已修复。( aosp/917740 )

版本 1.1.0-alpha02

2019年1月30日

androidx.recyclerview:recyclerview 1.1.0-alpha02 已发布。

API 变更

RecyclerView.setLayoutFrozen(boolean) 和 RecyclerView.isLayoutFrozen() 已弃用,取而代之的是 RecyclerView.suppressLayout(boolean) 和 RecyclerView.isLayoutSuppressed()。( aosp/839414 )

RecyclerView.setLayoutTransition(LayoutTransition) 已正式弃用,当调用时传入非 null 值将抛出 IllegalArgumentException。( aosp/839414 )

bug 修复

修复了 RV 中 SmoothScroller 从未停止的 bug。( aosp/843741 )

修复了滚动动画结束时可能未调用 SCROLL_STATE_IDLE 的 bug。( aosp/812576 )

版本 1.1.0-alpha01

2018年12月3日

androidx.recyclerview 1.1.0-alpha01 和 androidx.recyclerview-selection 1.1.0-alpha01 已发布。

androidx.recyclerview 1.1.0-alpha01

API 变更

aosp/723649: RecyclerView 现在实现了 NestedScrollingChild3,使其能够在所有嵌套滚动父级停止消耗嵌套滚动距离时收到通知。如果开发者代码目前重写了 RecyclerView.onNestedScroll(View, int, int, int, int, int),它很可能将不再被调用,而应改为重写 RecyclerView.onNestedScroll(View, int, int, int, int, int, int[])。

bug 修复

修复了在使用 TransitionManager 折叠/展开 RecyclerView 中的项目时发生的崩溃。( b/37129527 )

修复了 RecyclerView.OnItemTouchListener 的行为与视图系统的 onInterceptTouchEvent 和 onTouchEvent 行为不一致的错误。( aosp/721235 )

修复了一些与平滑滚动相关的边界情况 bug。( aosp/729718, aosp/747168, aosp/812576 )

修复了 PagerSnapHelper 中的吸附策略,以处理非典型子视图。( aosp/795752 )

androidx.recyclerview-selection 1.1.0-alpha01

bug 修复

修复了数据集在删除选择时发生 ConcurrentModificationException 的问题。

RecyclerView-Selection 版本 1.1.0

RecyclerView-Selection 版本 1.1.0

2021年1月27日

androidx.recyclerview:recyclerview-selection:1.1.0 已发布。版本 1.1.0 包含以下提交。

自 1.0.0 以来的主要变更

大量的稳定性改进。

在 SelectionTracker.Builder 上弃用了 withGestureTooltypes 和 withPointerTooltypes 方法。这些方法将在未来版本中移除。

RecyclerView-Selection 版本 1.1.0-rc03

2020 年 10 月 1 日

androidx.recyclerview:recyclerview-selection:1.1.0-rc03 已发布。版本 1.1.0-rc03 包含以下提交。

bug 修复

感谢 Stefan Kiesler 的测试修复和反馈。

修复了在主动选择期间意外调用子视图 OnClickListeners 的问题。

鼠标处理程序(带状选择)> 优雅地处理意外滚动。( b/167821507 )

RecyclerView-Selection 版本 1.1.0-rc02

2020年9月2日

androidx.recyclerview:recyclerview-selection:1.1.0-rc02 已发布。版本 1.1.0-rc02 包含以下提交。

亮点

解决了 1.0 版本中在输入处理方面的多项回归问题。

更新了库以遵守 onRequestDisallowInterceptTouchEvent,使其能与 ItemTouchHelper 良好配合(只需轻扫即可!)。

bug 修复

修复了选择库错误解释 GestureDetector 事件,导致主动选择期间点击丢失的问题。( b/165030422 )

修复了选择未更新以反映从适配器中移除的项目的问题。( b/138932671 )

修复了当 SelectionTracker 具有活动选择时,RecyclerView 项目会触发 onClick 事件的问题。( b/161162268 )

现在正确处理 onRequestDisallowInterceptTouchEvent

修复了在 Q 版本上鼠标滚动时出现 “Cannot call this method in a scroll callback” 的问题

更新了文档(特别是在 StableIdKeyProvider 中),明确说明了 RecyclerView 实例的要求

Recyclerview-Selection 版本 1.1.0-rc01

2020年2月5日

androidx.recyclerview:recyclerview-selection:1.1.0-rc01 已发布。版本 1.1.0-rc01 包含以下提交。

bug 修复

修复了当 RecyclerView 与可滚动 AppBarLayout 交互时,手势选择难以滚动的问题。( aosp/1193934 )

RecyclerView-Selection 版本 1.1.0-beta01

2019年12月4日

androidx.recyclerview:recyclerview-selection:1.1.0-beta01 已发布。版本 1.1.0-beta01 包含以下提交。

与防御性检查和内部状态管理相关的整体稳定性改进。

bug 修复

改进了库状态管理和 CANCEL 事件的解释,从而提高了稳定性。

b/128054552

b/130707991

b/137460699

API 变更

为缺失的选择键类型参数的类和方法添加了该参数。

弃用方法

SelectionTracker.Builder#withPointerTooltype

SelectionTracker.Builder#withGestureTooltype

这些方法的存在是为了让开发者可以将指针或手势行为映射到默认值以外的工具类型*。这个意图是好的,但在进一步使用后发现,用户对输入行为的期望非常依赖于工具类型。此外,就 Android 输入系统而言,“被动”触控笔属于 FINGER 工具类型。

默认工具类型为手势的 FINGER 和指针的 MOUSE。

相关推荐