Most visited

Recently visited

RecyclerView.State

public static class RecyclerView.State
extends Object

java.lang.Object
   ↳ android.support.v7.widget.RecyclerView.State


包含有关当前RecyclerView状态的有用信息,例如目标滚动位置或视图焦点。 状态对象还可以保留任意数据,由资源ID标识。

通常情况下,RecyclerView组件需要在彼此之间传递信息。 为了在组件之间提供定义良好的数据总线,RecyclerView将相同的状态对象传递给组件回调,并且这些组件可以使用它来交换数据。

如果实现自定义组件,则可以使用State的put / get / remove方法在组件之间传递数据,而无需管理其生命周期。

Summary

Public constructors

RecyclerView.State()

Public methods

boolean didStructureChange()
<T> T get(int resourceId)

获取从指定的ID映射的对象,或者如果不存在这样的数据,则获取 null

int getItemCount()

返回可以布局的项目总数。

int getTargetScrollPosition()

如果触发滚动以使某个项目可见,则此值将返回该项目的适配器索引。

boolean hasTargetScrollPosition()

如果当前卷轴有目标位置,则返回。

boolean isMeasuring()

如果RecyclerView当前正在测量布局,则返回true。

boolean isPreLayout()

如果返回true

void put(int resourceId, Object data)

添加从指定ID到指定值的映射,如果有指定键,则从指定键替换以前的映射。

void remove(int resourceId)

如果存在,则从指定的ID中删除映射。

String toString()

返回对象的字符串表示形式。

boolean willRunPredictiveAnimations()

返回RecyclerView是否将在此布局传递中运行预测动画。

boolean willRunSimpleAnimations()

返回RecyclerView是否将在此布局传递中运行简单动画。

Inherited methods

From class java.lang.Object

Public constructors

RecyclerView.State

RecyclerView.State ()

Public methods

didStructureChange

boolean didStructureChange ()

Returns
boolean true if the structure of the data set has changed since the last call to onLayoutChildren, false otherwise

get

T get (int resourceId)

如果不存在这样的数据, null指定的ID获取映射的对象,或 null

Parameters
resourceId int: Id of the resource you want to remove. It is suggested to use R.id.* to preserve cross functionality and avoid conflicts.
Returns
T

getItemCount

int getItemCount ()

返回可以布局的项目总数。 请注意,此数字不一定等于适配器中的项目数量,因此您应始终使用此数字进行位置计算,并且不要直接访问适配器。

RecyclerView侦听适配器的通知事件,并计算适配器数据更改对现有视图的影响。 这些计算用于决定应该运行哪些动画。

为了支持预测动画,RecyclerView可能会重写或重新排序适配器更改,以便在布局前版本中向LayoutManager呈现正确的状态。

例如,新添加的项目不包含在布局前项目数中,因为预先布局在添加项目之前反映了适配器的内容。 在幕后,RecyclerView偏移getViewForPosition(int)调用,使LayoutManager不知道预布局中新项目的存在。 该项目将在第二个布局阶段可用,并将包含在项目数量中。 对移动和移除的项目也进行类似的调整。

您可以通过 getItemCount()方法获得适配器的项目数量。

Returns
int The number of items currently available

也可以看看:

getTargetScrollPosition

int getTargetScrollPosition ()

如果触发滚动以使某个项目可见,则此值将返回该项目的适配器索引。

Returns
int Adapter index of the target item or NO_POSITION if there is no target position.

hasTargetScrollPosition

boolean hasTargetScrollPosition ()

如果当前卷轴有目标位置,则返回。

Returns
boolean true if scroll is being triggered to make a certain position visible

也可以看看:

isMeasuring

boolean isMeasuring ()

如果RecyclerView当前正在测量布局,则返回true。 仅当LayoutManager选择进入自动测量API并且RecyclerView具有非精确的测量规格时,该值才是true

请注意,如果LayoutManager支持预测动画,并且它正在计算预布置步骤, false即使RecyclerView处于onMeasure调用中,该值也将为onMeasure 这是因为预布置意味着RecyclerView的先前状态,并且针对该状态进行的测量不能改变RecyclerView的尺寸。 当发生这种情况时,LayoutManager总是保证再次接到onLayoutChildren(Recycler, State)呼叫。

Returns
boolean True if the RecyclerView is currently calculating its bounds, false otherwise.

isPreLayout

boolean isPreLayout ()

如果返回true

Returns
boolean

put

void put (int resourceId, 
                Object data)

添加从指定ID到指定值的映射,如果有指定键,则从指定键替换以前的映射。

Parameters
resourceId int: Id of the resource you want to add. It is suggested to use R.id.* to preserve cross functionality and avoid conflicts.
data Object: The data you want to associate with the resourceId.

remove

void remove (int resourceId)

如果存在,则从指定的ID中删除映射。

Parameters
resourceId int: Id of the resource you want to remove. It is suggested to use R.id.* to preserve cross functionality and avoid conflicts.

toString

String toString ()

返回对象的字符串表示形式。 一般来说, toString方法会返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。

ObjecttoString方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

willRunPredictiveAnimations

boolean willRunPredictiveAnimations ()

返回RecyclerView是否将在此布局传递中运行预测动画。

Returns
boolean true if RecyclerView is calculating predictive animations to be run at the end of the layout pass.

willRunSimpleAnimations

boolean willRunSimpleAnimations ()

返回RecyclerView是否将在此布局传递中运行简单动画。

Returns
boolean true if RecyclerView is calculating simple animations to be run at the end of the layout pass.

Hooray!