3 android gridlayoutmanager android-recyclerview
我正在查看GridLayoutManager的文档及其RecyclerView的SpanSizeLookUp类.但我无法了解SpanSizeLookUp类的getSpanGroupIndex和getSpanIndex方法.我还通过覆盖和返回任意数字(小于跨度计数)进行实验.但我不知道它用于什么.
我无法理解文档说明.我想清楚这一点.
默认情况下,网格布局中的每个项目占用1个跨度.如果Grid是水平的,span表示一行,如果Grid是垂直的,span表示一列.如果您的项目可能需要将自己布局为多个跨度(例如,3列网格中的标题项将具有spanSize = 3),则可以提供SpanSizeLookup,如果item是标题项,则返回3;如果是常规项,则返回1 .
当GridLayoutManager(GLM)需要决定项目的跨度时,它会在SpanSizeLookup中调用getSpanIndex.该方法遍历给定位置之前的每个项目,以决定该项目应放置在哪个范围内.
例如,如果您调用glm.scrollToPosition(n),则SpanSizeLookup将遍历从0到N的每个项目,检查每个项目的消耗量,并确定项目所在的N位置.假设您在索引0和3处有一个带有标题行的网格,其余项目需要1个跨度.如果GLM调用spanSizeLookup.getSpanIndex(4)它会调用getSpanIndex的0 1 2 3,实现第三个项目之后,下一个项目应该放在跨度0,并将其返回.
虽然它会缓存这些结果,但如果您可以更快地计算它,则遍历所有项目效率很低.例如,也许您知道所有项目都需要1个跨度,然后您可以覆盖getSpanIndex并返回n % spanCount.这就是为什么这种方法是公开的.
getSpanGroupIndex是该项目的组.如果GLM是垂直的,则组是"行",如果GLM是水平的,则组是"列".它主要用于可访问性.对于上面每个项目消耗1个跨度的示例,您可以覆盖此方法并返回n / spanCount.我同意这种方法不明确,会创建一张改进文档的票证.
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |