Recyclerview

上次更新时间 当前稳定版 下一候选版本 Beta 版 Alpha 版
2019 年 12 月 18 日 1.1.0 - - 1.2.0-alpha01

声明依赖项

要添加 RecyclerView 的依赖项,您必须将 Google Maven 代码库添加到项目中。有关详情,请阅读 Google 的 Maven 代码库

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

    dependencies {
        implementation "androidx.recyclerview:recyclerview:1.1.0"
        // For control over item selection of both touch and mouse driven selection
        implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc01"
    }
    

如需详细了解依赖项,请参阅添加编译依赖项

版本 1.2.0

版本 1.2.0-alpha01

2019 年 12 月 18 日

发布了 androidx.recyclerview:recyclerview:1.2.0-alpha01版本 1.2.0-alpha01 中包含这些提交内容

问题修复

  • 修复了 FastScroller 在 RTL 绘制和触摸精确度方面存在的一些小问题(b/143789932aosp/1130438
  • 修复了在运行 ItemTouchHelper 动画时从 RecyclerView 中移除 ItemTouchHelper 后,ItemTouchHelper 出现的崩溃问题(b/140447176aosp/1167575

版本 1.1.0

版本 1.1.0

2019 年 11 月 20 日

发布了 androidx.recyclerview:recyclerview:1.1.0版本 1.1.0 中包含这些提交内容

自 1.0.0 以来的重要变更

  • PagerSnapHelperLinearSnapHelper 现在将 RecyclerView 的内边距考虑在内,而无论 clipToPadding 的值如何(b/139452422b/139012032aosp/1103182aosp/1106715aosp/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 中包含这些提交内容

问题修复

  • 修复了替换 RecyclerViewAccessibilityDelegate.ItemDelegate 时出现的“应用无响应”问题(aosp/1138057aosp/1133434

版本 1.1.0-beta05

2019 年 10 月 9 日

发布了 androidx.recyclerview:recyclerview:1.1.0-beta05版本 1.0.0-beta05 中包含这些提交内容

API 变更

  • aosp/1106715aosp/1103182 之后,现在 LinearSnapHelper 和 PagerSnapHelper 将返回位于 RecyclerView 边界中心再减去内边距的视图,不受 clipToPadding 值的影响。(aosp/1130728)

问题修复

  • 修复了 RecyclerView 为 RecyclerView 子级生成重复无障碍节点的问题。(aosp/1130618)
  • 修复了 RecyclerViews 中虚拟无障碍层次结构无法使用的问题。
  • 修复了未使用自定义 ItemDelegate 的问题。

版本 1.1.0-beta04

2019 年 9 月 5 日

发布了 androidx.recyclerview:recyclerview:1.1.0-beta04。点击此处可查看此版本中包含的提交内容。

问题修复

  • PagerSnapHelperLinearSnapHelper 现在将 RecyclerView 的内边距考虑在内,而无论clipToPadding 的值如何((b/139452422b/139012032aosp/1103182aosp/1106715
  • 修复了在嵌套预滚动导致 NestedScrollingParent 滚动时 RecyclerView 不允许触摸拦截的错误(b/138668210aosp/1105373)这可让 ViewPager2 等库受益。
  • 现在,在分派嵌套预滚动之前,RecyclerView 会持续变为 SCROLL_STATE_DRAGGING (aosp/1105373)
  • 在手势超出触摸溢出之前,不再执行嵌套预滚动(b/139530818aosp/1105373
  • 当 RecyclerView 无法沿分派给嵌套预滚动的 dxdy 参数确定的方向滚动时,这两个参数均会清零 (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)

问题修复

  • 修复了与 RecyclerView 和无障碍服务相关的重大堆栈溢出错误。(aosp/1099577)

版本 1.1.0-beta02

2019 年 8 月 7 日

发布了 androidx.recyclerview:recyclerview:1.1.0-beta02。点击此处可查看此版本中包含的提交内容。

新功能

  • RecyclerView 现在具有默认样式属性 recyclerViewStyle,该属性可让您设置主题背景的默认样式

问题修复

  • 修复了在滚动 RecyclerView 导致 NestedScrollingParent 滚动时 RecyclerView 不禁止触摸拦截的问题。(b/131115697aosp/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-alpha06androidx.recyclerview:recyclerview-selection:1.1.0-alpha06。点击此处可查看此版本中包含的提交内容。

新功能

  • 新增了 smoothScrollBy 过载:RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration),它允许您指定动画时长(以毫秒为单位)。(aosp/952807)

API 变更

  • GridLayoutManagerStaggeredGridLayoutManager 不再针对无障碍服务自动将完整跨度项标记为标题 (aosp/969703)
  • recyclerview-selection 中保留选择顺序(按创建时间) (aosp/937279)

问题修复

  • 修复了在嵌套滚动情况下 RecyclerView 以不正确的速度滑动的错误。(aosp/961642)
  • 改进了 recyclerview-selection 的稳定性(aosp/960213aosp/926296

版本 1.1.0-alpha05

2019 年 5 月 7 日

发布了 androidx.recyclerview:recyclerview:1.1.0-alpha05androidx.recyclerview:recyclerview-selection:1.1.0-alpha05。点击此处可查看此版本中包含的提交内容。

新功能

  • 可通过替换 LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) 来自定义应为关联 RecyclerView 的任意一侧增加的额外布局空间。(aosp/931259)

API 变更

  • 添加了用于检索 DividerItemDecoration 可绘制对象的 API (aosp/937282)
  • 弃用了 LinearLayout.getExtraLayoutSpace(RecyclerVew.State),转为使用允许在两侧自定义额外布局空间的新机制。这种新方法为 LinearLayout.calculateExtraLayoutSpace(RecyclerView.state, int[]) (aosp/931259)

问题修复

版本 1.1.0-alpha04

2019 年 4 月 3 日

发布了 androidx.recyclerview:recyclerview:1.1.0-alpha04。点击此处可查看此版本中包含的提交内容。

问题修复

  • 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):
    • 使用跨度信息来估算 GridLayoutManager 的滚动条尺寸。
    • 要启用此功能,请调用 GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean),同时传入 true。
    • 如需了解详情,请参阅有关 GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) 的文档。

问题修复

  • 无障碍服务:存在一个错误:一旦 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)

问题修复

  • 修复了 RV 中 SmoothScroller 永不停止的错误 (aosp/843741)
  • 修复了滚动动画结束时不调用 SCROLL_STATE_IDLE 的错误。(aosp/812576)

版本 1.1.0-alpha01

2018 年 12 月 3 日

发布了 androidx.recyclerview 1.1.0-alpha01androidx.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[])

问题修复

  • 修复了使用 TransitionManager 收起/展开 RecyclerView 中的项时出现的崩溃问题 (b/37129527)。
  • 修复了 RecyclerView.OnItemTouchListener 的行为与视图系统的 onInterceptTouchEventonTouchEvent 行为不一致的错误 (aosp/721235)
  • 修复了一些与流畅滚动有关的边缘情况错误(aosp/729718aosp/747168aosp/812576
  • 修复了 PagerSnapHelper 中用于处理非典型子级视图的贴靠策略 (aosp/795752)

androidx.recyclerview-selection 1.1.0-alpha01

问题修复

  • 修复了当数据集因移除选择而发生更改时的 ConcurrentModificationException

RecyclerView-Selection 版本 1.1.0

RecyclerView-Selection 版本 1.1.0-beta01

2019 年 12 月 4 日

发布了 androidx.recyclerview:recyclerview-selection:1.1.0-beta01版本 1.1.0-beta01 中包含这些提交内容

总体改进了对于内部状态的防范性检查和管理的稳定性。

问题修复

API 变更

  • 将选择键类型参数添加到缺少它的类和方法中。
  • 弃用的方法:
    • SelectionTracker.Builder#withPointerTooltype
    • SelectionTracker.Builder#withGestureTooltype
    • 这些方法旨在让开发者可以将指针或手势行为映射到除默认值*以外的工具类型。虽然出发点是好的,但通过进一步使用,我可以清楚地看到,用户对输入行为的期望是取决于工具类型的。另外,就 Android 输入系统而言,“被动”触控笔属于 FINGER 工具类型。
    • 手势的默认工具类型为 FINGER,而指针的默认工具类型则为 MOUSE