自定义 RecyclerView | 您所在的位置:网站首页 › 自己动手实现recyclerview › 自定义 RecyclerView |
确定要使用的选择键类型,然后构建 ItemKeyProvider。
有三种键类型可供您标识所选项:Parcelable(以及所有子类,如 Uri)、String 和 Long。如需详细了解选择键类型,请参阅 SelectionTracker.Builder。 实现 ItemDetailsLookup。ItemDetailsLookup 使选择功能库能够访问给定 MotionEvent 对应的 RecyclerView 项的相关信息。它实际上是由 RecyclerView.ViewHolder 实例支持(或从中提取)的 ItemDetails 实例的工厂。 更新 RecyclerView 中的 Views 项,以反映用户已将其选中或取消选中。选择功能库不会为所选项提供默认视觉装饰。您必须在实现 onBindViewHolder() 时提供此设置。建议采用如下方法: 在 onBindViewHolder() 中,对 View 对象调用 setActivated()(而不是 setSelected())并传入 true 或 false(具体取决于对应的项否处于选中状态)。 更新视图样式以表示已激活状态。我们建议您使用颜色状态列表资源来配置样式。 使用 ActionMode 为用户提供对所选项执行操作所需的工具。注册 SelectionTracker.SelectionObserver 以在选择状态有变时接收通知。首次选择时,请启动 ActionMode 以向用户表示这一点,并提供特定于该选择的操作。例如,您可以向 ActionMode 栏添加删除按钮,然后将栏上的返回箭头连接到取消选择的操作。当选择列表变空时(如果用户取消选择最后一项),请不要忘记终止操作模式。 执行任何经过解释的次级操作在事件处理流水线的最后,库可能会判断用户试图通过点按某个项来激活它或试图拖放某个项或一组选定项。请通过注册适当的监听器来回应这些解释。如需了解详情,请参阅 SelectionTracker.Builder。 使用 SelectionTracker.Builder 汇编所有内容以下示例演示了如何使用 Long 选择键将这些部分组合在一起: Kotlin var tracker = SelectionTracker.Builder( "my-selection-id", recyclerView, StableIdKeyProvider(recyclerView), MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build() Java SelectionTracker tracker = new SelectionTracker.Builder( "my-selection-id", recyclerView, new StableIdKeyProvider(recyclerView), new MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build();为了构建 SelectionTracker 实例,您的应用必须向 SelectionTracker.Builder 提供您之前初始化 RecyclerView 时所用的同一个 RecyclerView.Adapter。因此,创建 RecyclerView.Adapter 后,您很可能需要在 SelectionTracker 实例一经创建后就将其注入到 RecyclerView.Adapter 中。否则,您将无法通过 onBindViewHolder() 方法检查某个项的已选中状态。 将选中状态包含到 activity 生命周期事件中。为了在不同的 activity 生命周期事件之间保留选中状态,您的应用必须分别从 activity 的 onSaveInstanceState() 和 onRestoreInstanceState() 方法调用选择状态跟踪器的 onSaveInstanceState() 和 onRestoreInstanceState() 方法。您的应用还必须向 SelectionTracker.Builder 构造函数提供唯一的选择 ID。此 ID 是必需的,因为 activity 或 fragment 可能具有多个不同的可选择列表,而所有这些列表都需要保持其已保存的状态。 其他资源Sunflower 演示版应用中使用了 RecyclerView。 |
CopyRight 2018-2019 实验室设备网 版权所有 |