RecyclerView API官方文档译文

来源:互联网 发布:淘宝空姐妮妮是正品吗 编辑:程序博客网 时间:2024/04/27 21:03

RecyclerView

added in version 22.1.0
belongs to Maven artifact
com.android.support:recyclerview-v7:27.0.0

public class RecyclerView extends ViewGroup implements ScrollingView, NestedScrollingChild2

继承关系

java.lang.Object
 ↳ android.view.View
  ↳ android.view.ViewGroup
   ↳ android.support.v7.widget.RecyclerView

已知直接子类

BaseGridView, WearableRecyclerView

已知间接子类

HorizontalGridView, VerticalGridView

一个在有限的窗口中展示大型数据集的灵活视图。

专业术语

  • Adapter:RecyclerView.Adapter 的子类,负责提供一个数据集中的各个项目的视图。
  • Position:适配器中的数据项的位置。
  • Index:调用 getChildAt(int) 方法时的子视图的索引。与位置相对应。
  • Binding:准备一个子视图来显示适配器中对应位置的数据的过程。
  • Recycle (view):一个之前用于显示适配器中具体位置的数据并可存于缓存中用于之后显示同种类型数据的视图。通过跳过布局初始化或者布局创建,可以大幅度的提升性能。
  • Scrap (view):一个在布局过程中进入临时性分离状态的子视图。它们可以重复使用而不会完全脱离父 RecyclerView,不论是不需要重新绑定未发生更改还是被适配器认为是脏的而发生了更改。
  • Dirty (view):一个在显示之前必须由适配器还原的视图。

RecyclerView 中的位置

RecyclerView 是为了能够在布局计算过程中检测数据集的批量变化而从 RecyclerView.Adapter 和 RecyclerView.LayoutManager 之间额外抽象的概念。它可以跟踪适配器变化来计算动画,从而解放了 LayoutManager。它的所有视图绑定都同时发生且避免了不必要的绑定,从而也有助于提升性能。

因此,RecyclerView 中有两种与位置相关联的方法:

  • layout position:子项目在最新的布局计算中的位置。这是从 LayoutManager(布局管理者) 的角度来看的。
  • adapter position:子项目在适配器中的位置。这是从适配器的角度来看的。

除了发起 adapter.notify() 事件和计算更新后的布局之间的时间外,这两个位置是相同的。

任何返回或者接收 LayoutPosition 的方法都使用最新的布局计算位置(如:getLayoutPosition(), findViewHolderForLayoutPosition(int))。这些位置包含了直到最后一次的布局计算为止的所有更改。可以依靠这些位置来与用户当前在屏幕中看到的内容保持一致。例如,如果在屏幕上有一个项目列表,用户请求查看第五个元素,则应该使用这些方法来与用户正在看到内容进行匹配。
另一组与位置相关的方法是 AdapterPosition 的形式(如:getAdapterPosition(), findViewHolderForAdapterPosition(int))。当需要使用最新的适配器位置时,即使它们尚未反映到布局中,也应该使用这些方法。例如,如果你想通过 ViewHolder 的点击来访问适配器中的子项目,就应该使用 getAdapterPosition() 。请注意,如果 notifyDataSetChanged() 已被调用且尚未完成新布局的计算,则这些方法可能无法计算适配器的位置。因此需要小心的处理这些方法中的 NO_POSITION 或者为空的结果。

当编写一个 RecyclerView.LayoutManager 时要使用布局位置,而在编写一个 RecyclerView.Adapter 则需要使用适配器位置。

概要

嵌套类

class RecyclerView.Adapter<VH extends RecyclerView.ViewHolder>

 适配器的基类。

 适配器提供了展示在 RecyclerView 中的特定数据集从应用程序到视图上的绑定。

class RecyclerView.AdapterDataObserver

 观察 RecyclerView.Adapter 的更改的观察者基类。

interface RecyclerView.ChildDrawingOrderCallback

 可以用来改变 RecyclerView 子项目的绘制顺序的回调接口。

class RecyclerView.ItemAnimator

 这个类定义了当适配器中的子项目发生变化时所发生的动画。

原创粉丝点击