RecyclerView机制分析: State

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值