如果您使用RecyclerView提供的默认布局管理器,您将自动获得此优化。但是,如果您使用的是嵌套的RecyclerViews,或者您编写了自己的布局管理器,则需要更改代码才能利用此功能。
对于嵌套的RecyclerViews,在内部LayoutManagers上调用LinearLayoutManager的新setInitialItemPrefetchCount()方法(在v25.1中可用)以获得最佳性能。例如,如果垂直列表中的行至少显示三个项目,请调用setInitialItemPrefetchCount(4)。
如果您已经实现了自己的LayoutManager,则需要覆盖LayoutManager.collectAdjacentPrefetchPositions(),这在启用预取时由RecyclerView调用(LayoutManager中的默认实现不执行任何操作)。其次,如果您希望在其RecyclerView嵌套在另一个中时从LayoutManager中进行预取,则还应实现LayoutManager.collectInitialPrefetchPositions()。
如果要查看其中一个默认LayoutManagers或您自定义LayoutManager中的优化操作,可以切换LayoutManager.setItemPrefetchEnabled()并比较结果.
setInitialPrefetchItemCount 方法
设置要预取的项目数,该项目 collectInitialPrefetchPositions(int, LayoutPrefetchRegistry)
定义当此LayoutManager的RecyclerView嵌套在另一个RecyclerView中时应预取多少内部项目。
将此值设置为此内部LayoutManager首次滚动到视口时将显示的项目数。RecyclerView将尝试预取该数量的项目,以便它们准备就绪,避免因内部RecyclerView滚动到视口中而变得混乱。
例如,使用水平滚动内部RecyclerViews垂直滚动RecyclerView。行中始终有4个项目可见(如果未对齐,则为5个)。4
对每个内部RecyclerView的LinearLayoutManager 传递 此方法将使RecyclerView的预取功能能够在屏幕上滚动之前提前为一行中的4个视图创建/绑定工作,而不仅仅是默认值2。
除非LayoutManager在另一个RecyclerView中嵌套的RecyclerView中,否则调用此方法不会执行任何操作。