Recyclerview
下表列出了 androidx.recyclerview
组中的所有工件。
制品 | 稳定版 | 候选版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
recyclerview | 1.3.2 | - | - | 1.4.0-alpha02 |
recyclerview-selection | 1.1.0 | - | - | 1.2.0-alpha01 |
声明依赖项
如需添加 RecyclerView 的依赖项,您必须将 Google Maven 代码库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库。
在应用或模块的 build.gradle
文件中添加所需工件的依赖项:
Groovy
dependencies { implementation "androidx.recyclerview:recyclerview:1.3.2" // For control over item selection of both touch and mouse driven selection implementation "androidx.recyclerview:recyclerview-selection:1.1.0" }
Kotlin
dependencies { implementation("androidx.recyclerview:recyclerview:1.3.2") // For control over item selection of both touch and mouse driven selection implementation("androidx.recyclerview:recyclerview-selection:1.1.0") }
如需详细了解依赖项,请参阅添加 build 依赖项。
反馈
您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。
如需了解详情,请参阅问题跟踪器文档。
版本 1.4
版本 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 插件)警告,可以禁止这些警告。
API 变更
- 废弃了
ViewCompat.LAYOUT_DIRECTION_
API(I51710、b/317055535)
新功能
- 支持可变刷新率:现在,RecyclerView 会在通过 OverScroller 滚动(例如从快速滚动或平滑滚动)进行滚动时调用
setFrameContentVelocity
。(I8f8a4)
其他变化
- 移除了对新平台 API 访问权限的手动概述,因为当将 R8 与 AGP 7.3 或更高版本(例如 R8 版本 3.3)搭配使用时,系统会自动通过 API 建模来实现上述目的;如果使用 AGP 8.1 或更高版本(例如 D8 版本 8.1),则适用于所有 build。建议未使用 AGP 的客户端更新到 D8 8.1 或更高版本。详情请参阅这篇文章。(Ia60e0、b/345472586)
- 向
RecyclerView
绑定/创建轨迹部分添加项视图类型,并将 RV 预提取标记为“强制 - 下一帧需要”它们预计会被下一帧使用,因此应该尽快开始工作。(I8ec3e、b/309523615) - 将
compileSdk
更新至 35(如需了解详情,请参阅上面的“兼容性说明”)。5dc41be
外部贡献
GestureDetectorCompat
现已废弃,因为GestureDetector
可通过minSdk
获取。(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
。
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
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 变更
- 为许多方法和参数添加了可为 null 性注解,以提升 Java 用户的 lint 警告,以及 Kotlin 用户的互操作性。对于某些 Kotlin 用户来说,这可能是一项破坏源代码的更改,并可能导致部分 Java 用户遇到其他 lint 警告/错误。(I61829、b/236487044;Ia0b6f;I6f119、b/236487209;Ibe1de、b/236487210)
bug 修复
- 通过设置 a11y 节点信息类名称,确保 a11y 服务将网格视为网格。(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 修复
版本 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-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 修复
- 现在,在
onViewRecycled
回调中执行查询时,ConcatAdapter
中的ViewHolder
会返回正确的适配器位置。(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 会返回相对于其所绑定的适配器的位置。
- getAbsoluteAdapterPosition 会返回相对于整个 RecyclerView 的位置。
延迟状态恢复:现在,RecyclerView 适配器可以推迟状态恢复的时间,直到其内容加载完毕。如需了解详情,请参阅相应文档。
版本 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)
外部贡献
- 感谢 Facebook 的 Kolin Krewinkel 所做的贡献!
版本 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,以允许适配器控制何时应恢复布局状态。例如,您可以调用新的 API 实现以下操作:
myAdapter.setStateRestorationStrategy(StateRestorationStrategy.WHEN_NOT_EMPTY);
让 RecyclerView 等到适配器为非空状态后,再恢复滚动位置。
默认情况下不再填充 CollectionInfo 和 CollectionItemInfo。
如果您希望无障碍服务(例如 Talkback)继续向用户指明数量和项目索引,则需要自行填充 CollectionInfo 和 CollectionItemInfo。
这些对象不再填充在框架内,因为框架无法确定用户感知的项数(例如代表多个感知项的分隔符、标头或 RecyclerView 项目)。
bug 修复
- 现在,在视口尺寸发生变化时,RecyclerView 可以避免在视口之外的视图上进行锚定
- 修复了 DiffUtil 中的错误,之前当第一个列表中的原始项目在第二个列表中多次重复时,该类可能无法正确计算差异。(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 后,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 为 RecyclerView 子级生成重复无障碍节点的问题。(aosp/1130618)
- 修复了 RecyclerViews 中虚拟无障碍层次结构无法使用的问题。
- 修复了未使用自定义 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 不允许触摸拦截的 bug(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 和无障碍服务相关的重大堆栈溢出 bug。(aosp/1099577)
版本 1.1.0-beta02
2019 年 8 月 7 日
发布了 androidx.recyclerview:recyclerview:1.1.0-beta02
。点击此处可查看此版本中包含的提交内容。
新功能
- RecyclerView 现在具有默认样式属性
recyclerViewStyle
,该属性可让您设置主题的默认样式
bug 修复
- 修复了在滚动 RecyclerView 导致 NestedScrollingParent 滚动时 RecyclerView 不禁止轻触拦截的 bug。(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
以不正确的速度快速滑动的 bug。(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 变更
- 添加了用于检索
DividerItemDecoration
可绘制对象的 API (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):- 使用跨度信息估算
GridLayoutManager
的滚动条尺寸。 - 要启用此功能,请调用
GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean)
,同时传入 true。 - 如需了解详情,请参阅有关
GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean)
的文档。
- 使用跨度信息估算
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
行为不一致的 bug (aosp/721235) - 修复了一些与流畅滚动有关的边缘情况错误(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)
- 修复了 RecyclerView 项在 SelectionTracker 具有主动选择时触发 onClick 事件的问题 (b/161162268)
- 现可正确处理
onRequestDisallowInterceptTouchEvent
- 修复了在 Android 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 事件的解释,提高了稳定性。
API 变更
- 将选择键类型参数添加到缺少它的类和方法中。
- 弃用的方法:
- SelectionTracker.Builder#withPointerTooltype
- SelectionTracker.Builder#withGestureTooltype
- 这些方法旨在让开发者可以将指针或手势行为映射到除默认值*以外的工具类型。虽然出发点是好的,但通过进一步使用,我可以清楚地看到,用户对输入行为的期望是取决于工具类型的。另外,就 Android 输入系统而言,“被动”触控笔属于 FINGER 工具类型。
- 手势的默认工具类型为 FINGER,而指针的默认工具类型则为 MOUSE。