public static class RecyclerView.State
extends Object
java.lang.Object | |
↳ | android.support.v7.widget.RecyclerView.State |
包含有关当前RecyclerView状态的有用信息,例如目标滚动位置或视图焦点。 状态对象还可以保留任意数据,由资源ID标识。
通常情况下,RecyclerView组件需要在彼此之间传递信息。 为了在组件之间提供定义良好的数据总线,RecyclerView将相同的状态对象传递给组件回调,并且这些组件可以使用它来交换数据。
如果实现自定义组件,则可以使用State的put / get / remove方法在组件之间传递数据,而无需管理其生命周期。
Public constructors |
|
---|---|
RecyclerView.State() |
Public methods |
|
---|---|
boolean |
didStructureChange() |
<T> T |
get(int resourceId) 获取从指定的ID映射的对象,或者如果不存在这样的数据,则获取 |
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
|
RecyclerView.State ()
boolean didStructureChange ()
Returns | |
---|---|
boolean |
true if the structure of the data set has changed since the last call to onLayoutChildren, false otherwise |
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 |
int getItemCount ()
返回可以布局的项目总数。 请注意,此数字不一定等于适配器中的项目数量,因此您应始终使用此数字进行位置计算,并且不要直接访问适配器。
RecyclerView侦听适配器的通知事件,并计算适配器数据更改对现有视图的影响。 这些计算用于决定应该运行哪些动画。
为了支持预测动画,RecyclerView可能会重写或重新排序适配器更改,以便在布局前版本中向LayoutManager呈现正确的状态。
例如,新添加的项目不包含在布局前项目数中,因为预先布局在添加项目之前反映了适配器的内容。 在幕后,RecyclerView偏移getViewForPosition(int)
调用,使LayoutManager不知道预布局中新项目的存在。 该项目将在第二个布局阶段可用,并将包含在项目数量中。 对移动和移除的项目也进行类似的调整。
您可以通过 getItemCount()
方法获得适配器的项目数量。
Returns | |
---|---|
int |
The number of items currently available |
也可以看看:
int getTargetScrollPosition ()
如果触发滚动以使某个项目可见,则此值将返回该项目的适配器索引。
Returns | |
---|---|
int |
Adapter index of the target item or NO_POSITION if there is no target position. |
boolean hasTargetScrollPosition ()
如果当前卷轴有目标位置,则返回。
Returns | |
---|---|
boolean |
true if scroll is being triggered to make a certain position visible |
也可以看看:
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. |
boolean isPreLayout ()
如果返回true
Returns | |
---|---|
boolean |
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. |
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. |
String toString ()
返回对象的字符串表示形式。 一般来说, toString
方法会返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |
boolean willRunPredictiveAnimations ()
返回RecyclerView是否将在此布局传递中运行预测动画。
Returns | |
---|---|
boolean |
true if RecyclerView is calculating predictive animations to be run at the end of the layout pass. |
boolean willRunSimpleAnimations ()
返回RecyclerView是否将在此布局传递中运行简单动画。
Returns | |
---|---|
boolean |
true if RecyclerView is calculating simple animations to be run at the end of the layout pass. |