RecyclerView 中文

点点圈 提交于 2019-11-29 07:01:59

RecyclerView

public class RecyclerView 
extends ViewGroup implements ScrollingViewNestedScrollingChild2

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跟踪适配器更改以计算动画。它还有助于提高性能,因为所有视图绑定都同时发生,并且避免了不必要的绑定。

因此,positionRecyclerView中有两种类型的相关方法:

  • 布局位置:项目在最新布局计算中的位置。这是从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中显示的视图的绑定RecyclerView。 

class RecyclerView.AdapterDataObserver

用于观察变化的观察者基类RecyclerView.Adapter。 

interface RecyclerView.ChildDrawingOrderCallback

一个回调接口,可用于更改RecyclerView子项的绘制顺序。 

class RecyclerView.EdgeEffectFactory

EdgeEffectFactory允许您为RecyclerViews自定义过度滚动边缘效果。 

class RecyclerView.ItemAnimator

此类定义在对适配器进行更改时对项目进行的动画。 

class RecyclerView.ItemDecoration

ItemDecoration允许应用程序从适配器的数据集向特定项视图添加特殊的绘图和布局偏移。 

class RecyclerView.LayoutManager

LayoutManager负责测量和定位项目视图RecyclerView,以及确定何时回收用户不再可见的项目视图的策略。 

class RecyclerView.LayoutParams

LayoutParams儿童的子类 RecyclerView。 

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

其实现RecyclerView.OnItemTouchListener具有空方法体和默认返回值。 

class RecyclerView.SmoothScroller

 

平滑滚动的基类。 

class RecyclerView.State

 

包含有关当前RecyclerView状态的有用信息,如目标滚动位置或视图焦点。 

class RecyclerView.ViewCacheExtension

ViewCacheExtension是一个帮助程序类,用于提供可由开发人员控制的附加视图缓存层。 

class RecyclerView.ViewHolder

ViewHolder描述了一个项目视图和有关其在RecyclerView中的位置的元数据。 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!