- State是最简单的RecyclerView子模块。
- RecyclerView在工作过程中,需要维护一系列状态信息(比如当前处于Layout的哪个阶段,是否处于preLayout阶段等)。并且因为RecyclerView将功能进行了子模块化,还需要传递某些信息到特定子模块来完成功能/通信,RecyclerView把这部分职责集中到了State模块中。State内部聚合了所需的各项状态信息,扮演了状态上下文角色。RecyclerView维护一个State实例,根据情况来存取State的某个状态信息。对于需要某些上下文信息的子模块,则直接将State实例传递过去(比如LayoutManager的onLayoutChildren函数就接受一个State参数作为当前的环境上下文),这样做,在函数层面会显得简洁,并且函数接口的扩展性比较强,后面如果需要新的状态信息,打包在State中传输即可,不需要再开一个新的函数参数,子模块会根据需要存取State的状态信息,在某种层面实现了子模块和RecyclerView以及子模块之间的通信/控制。
- State中维护以下状态信息:
- mTargetPosition: RecyclerView**当前滑动的终点Position**, 如果当前没有在滑动,那么值为NO_POSITION。
- mLayoutStep: 当前处于哪个Layout阶段,前面说过,RecylcerView的Layout分为3个阶段:
- STEP_
RecyclerView机制分析: State
最新推荐文章于 2024-06-05 19:22:33 发布
RecyclerView的State模块负责维护布局过程中的状态信息,如当前布局阶段、滑动终点位置、item数量等。它作为上下文被传递给子模块,实现通信和控制。State内部使用SparseArray支持扩展通信,允许使用者通过约定的key存取附加信息。
摘要由CSDN通过智能技术生成