RecyclerView
public class RecyclerView
extends ViewGroup
implements ScrollingView, NestedScrollingChild2
java.lang.Object继承 | |||
↳ | android.view.View | ||
↳ | android.view.ViewGroup | ||
↳ | android.support.v7.widget.RecyclerView |
灵活的视图,用于为大型数据集提供有限的窗口。
专业术语:
- 适配器:
RecyclerView.Adapter
负责提供表示数据集中项目的视图的子类。 - 位置:适配器中数据项的位置。
- 索引:在调用中使用的附加子视图的索引
getChildAt(int)
。与职位对比。 - 绑定:准备子视图以显示与适配器中的位置对应的数据的过程。
- 回收(视图):先前用于显示特定适配器位置的数据的视图可以放置在高速缓存中以供稍后重用,以便稍后再次显示相同类型的数据。这可以通过跳过初始布局膨胀或构造来显着提高性能。
- Scrap(视图):在布局期间进入临时分离状态的子视图。废弃视图可以重复使用,而不会与父级RecyclerView完全分离,如果不需要重新绑定,则不进行修改,如果视图被视为脏,则由适配器修改。
- 脏(视图):在显示之前必须通过适配器反弹的子视图。
RecyclerView中的位置:
RecyclerView 在布局计算过程中引入了额外的抽象级别,RecyclerView.Adapter
并且RecyclerView.LayoutManager
能够批量检测数据集更改。这样可以保存LayoutManager跟踪适配器更改以计算动画。它还有助于提高性能,因为所有视图绑定都同时发生,并且避免了不必要的绑定。
因此,position
RecyclerView中有两种类型的相关方法:
- 布局位置:项目在最新布局计算中的位置。这是从LayoutManager的角度来看的位置。
- 适配器位置:项目在适配器中的位置。这是从Adapter的角度来看的位置。
除了调度adapter.notify*
事件和计算更新的布局之间的时间之外,这两个位置是相同的。
方法,返回或收到*LayoutPosition*
的最新布局计算的(如:使用位置getLayoutPosition()
,findViewHolderForLayoutPosition(int)
)。这些位置包括直到最后一次布局计算的所有更改。您可以依靠这些位置与用户当前在屏幕上看到的内容保持一致。例如,如果屏幕上有一个项目列表,并且用户要求输入第5 个元素,则应使用这些方法,因为它们与用户看到的内容相匹配。
另一组与位置相关的方法是以。的形式 *AdapterPosition*
。(例如getAdapterPosition()
,findViewHolderForAdapterPosition(int)
)当您需要使用最新的适配器位置时,即使它们可能尚未反映到布局中, 您也应该使用这些方法。例如,如果要在ViewHolder上单击适配器中的项目,则应使用getAdapterPosition()
。请注意,如果notifyDataSetChanged()
已调用并且尚未计算新布局,则这些方法可能无法计算适配器位置。出于这个原因,您应该仔细处理NO_POSITION
或 null
从这些方法得到结果。
写作时RecyclerView.LayoutManager
你几乎总是想要使用布局位置,而写作时RecyclerView.Adapter
,你可能想要使用适配器位置。
摘要
嵌套类 |
|
---|---|
class |
RecyclerView.Adapter<VH extends RecyclerView.ViewHolder> 适配器的基类 适配器提供从特定于应用程序的数据集到在a中显示的视图的绑定 |
class |
RecyclerView.AdapterDataObserver 用于观察变化的观察者基类 |
interface |
RecyclerView.ChildDrawingOrderCallback 一个回调接口,可用于更改RecyclerView子项的绘制顺序。 |
class |
RecyclerView.EdgeEffectFactory EdgeEffectFactory允许您为RecyclerViews自定义过度滚动边缘效果。 |
class |
RecyclerView.ItemAnimator 此类定义在对适配器进行更改时对项目进行的动画。 |
class |
RecyclerView.ItemDecoration ItemDecoration允许应用程序从适配器的数据集向特定项视图添加特殊的绘图和布局偏移。 |
class |
RecyclerView.LayoutManager A |
class |
RecyclerView.LayoutParams
|
interface |
RecyclerView.OnChildAttachStateChangeListener 一个Listener接口,可以连接到RecylcerView,以便在ViewHolder连接到RecyclerView或从RecyclerView分离时得到通知。 |
class |
RecyclerView.OnFlingListener 如果开发人员希望处理它,则此类定义fling的行为。 |
interface |
RecyclerView.OnItemTouchListener OnItemTouchListener允许应用程序在对RecyclerView自身的滚动行为考虑这些触摸事件之前拦截RecyclerView的视图层次结构级别的正在进行的触摸事件。 |
class |
RecyclerView.OnScrollListener 可以将OnScrollListener添加到RecyclerView,以便在RecyclerView上发生滚动事件时接收消息。 |
class |
RecyclerView.RecycledViewPool RecycledViewPool允许您在多个RecyclerViews之间共享视图。 |
class |
RecyclerView.Recycler Recycler负责管理报废或分离的项目视图以供重复使用。 |
interface |
RecyclerView.RecyclerListener 可以在RecyclerView上设置RecyclerListener,以便在视图被回收时接收消息。 |
class |
RecyclerView.SimpleOnItemTouchListener 其实现 |
class |
RecyclerView.SmoothScroller
平滑滚动的基类。 |
class |
RecyclerView.State
包含有关当前RecyclerView状态的有用信息,如目标滚动位置或视图焦点。 |
class |
RecyclerView.ViewCacheExtension ViewCacheExtension是一个帮助程序类,用于提供可由开发人员控制的附加视图缓存层。 |
class |
RecyclerView.ViewHolder ViewHolder描述了一个项目视图和有关其在RecyclerView中的位置的元数据。
|