当前位置: 首页 > 知识库问答 >
问题:

SpanGroupIndex和SpanIndex回收器视图

邰博远
2023-03-14

我一直在看GridLayoutManager的留档和它的RecyclerView类。但是我无法了解SpanSizeLookUp类的getSpanGroupIndex和getSpanIndex方法。我还尝试了覆盖和返回任意数字(小于跨度计数)。但是我无法知道它是用来做什么的。

我无法理解文档说明。我想澄清一下。

共有1个答案

韩弘阔
2023-03-14

默认情况下,网格布局中的每个项目都需要1个跨度。如果Grid是水平的,则跨度表示一行,如果Grid是垂直的,则跨度表示一列。如果您的项目可能需要将自己布局为多个跨度(例如,3列网格中的标题项将具有spanSize=3),您可以提供一个SpanSizeLookup,如果项目是标题项,则返回3,如果它是常规项目,则返回1。

当GridLayoutManager(GLM)需要决定项目的跨度时,它会在SpanSizeLookup中调用getSpanIndex。该方法遍历给定位置之前的每个项目,以决定该项目应放置在哪个跨度处。

例如,如果调用glm。scrollToPosition(n),SpanSizeLookup检查从0到n的每个项目,检查每个项目消耗的跨距,并确定位于n的项目的位置。假设您在索引0和3处有一个带有标题行的网格,其余项目使用1个跨度。如果GLM调用spanSizeLookup。getSpanIndex(4)它将为0 1 2 3调用getSpanIndex,意识到在第三项之后,下一项应该放在span 0并返回它。

尽管它缓存了这些结果,但如果您可以更快地计算它,则遍历所有项目是低效的。例如,也许您知道所有项目都采用1跨度,那么您可以覆盖getspanIndex并返回n%spanCount。这就是为什么该方法是公开的。

getSpanGroupIndex是项目的组。如果GLM为垂直,则组为“行”,如果GLM为水平,则组为“列”。它主要用于辅助功能。对于上面每个项目消耗1 span的示例,您可以重写此方法并返回计数。我同意这种方法不明确,将创建一个票据来改进文档。

 类似资料:
  • 在其他回收器视图中有一个回收器视图。两者都需要垂直滚动。外部回收器视图滚动正常,但内部回收器视图滚动不正常。 这是代码: ViewAdapter如下: 我尝试了以下两种回收商观点,但都无法解决问题 也尝试了这个:

  • 我刚开始在firebase工作。我设法上传了文本和图像,但是,我无法检索要显示在回收器视图中的图像,只能检索文本。我用的是毕加索依赖。我已经包括了我的主要活动。java类,该类负责显示从问题“我的适配器”中的firebase检索的回收器视图项。java类和模型类。我相信,在我将图像URI上载到firebase存储时,我可能犯了没有存储图像URI的错误,因此适配器无法检索图像位置。我想这可能是因为我

  • 只是检查主活动. xml我正在做的是在按钮下方显示回收器视图并编辑文本...编辑文本的值被制成卡片,但问题是按钮不工作我不知道为什么请帮助 我是新的协调员的意见,所以请原谅我,如果我做一些新手的错误 AdapterEx.java 初始化回收器视图 主活动. xml 卡片视图. xml

  • 我正在尝试在我的 上实现 ,但我没有得到任何结果。 我遵循了这个教程和这个技巧,但是没有人为我工作。 我已经实现了: 但它不让我编译,因为它们是不同的< code > viewmoder ,因为我创建了两个< code > viewmoder 类,但它们< code >扩展了Recycler。ViewHolder所以我不明白... 我正在尝试这样做,因为我有一个,我希望当列表为空时,它会显示一个,

  • 我进行一个API调用,得到一个响应,并将其存储在中。我有1个和1个要填充。现在,当我得到响应时,它是根据JSON(即顺序)的,但当我尝试在适配器中设置它时,它是随机的(即没有顺序) 按顺序如下: 现在,在这个适配器中,ImagePath不是按照以下顺序:

  • 这是我的活动: 卡片xml 活动xml 这是我的自定义适配器 我已经看了很多关于如何让它工作的指南,但它仍然不起作用。有人知道发生了什么事吗?我的版本是25.0。1,并导入所有模块。但它并没有在布局中添加一张卡片。