使用网格布局管理器和不同项目范围的Recycler视图

时间:2015-10-14 07:45:47

标签: android android-recyclerview

我有一个带有网格布局管理器的Recycler View。我有跨度为1和2的项目,总跨度计数为2。 当我遇到跨度为1的项目时,我需要提供填充。

我会明显使用ItemDecoration来查看整个回收站视图。 问题主要是

  

当子视图的跨度计数变为1或2时,如何区分和识别左边/右边的子视图?

1 个答案:

答案 0 :(得分:0)

<强>问题

创建具有不同跨度的网格时,在将数据绑定到特定视图时,您不知道所放置的特定项目的垂直索引,因此您需要实现自己的逻辑来执行此操作

<强>解决方案

我自己遇到了类似的问题并通过提供我自己的逻辑来计算项目的索引来解决它,它在小尺寸的网格上运行得很好,但在较大的网格上可能会变得昂贵

从我正在处理的索引中我向后搜索并一起计算跨度计数,因此我在任何特定项目之前获得网格上的跨度计数,然后我可以采用数字模数和总跨度大小来计算如果该特定项目在哪个范围内,那么我可以决定该项目是否应该消耗两个空格而不是一个

所以基本上如果你有这种网格

[ 1, 1 ]
[   2  ]
[ x    ]

我们正在研究x,我们应该知道它的跨度,我们知道下一个项目的大小应该是2,我们需要决定是否需要在项目中添加填充。

我们可以通过将所有消耗的跨度加在一起来计算位置,这意味着先前项目的跨度,即1 + 1 + 2,这导致4,我们可以采用此模数来计算其跨度指数,因此我们得到4%2。

我们得到上一个项目的索引,意思是0,所以我们知道该项目在索引1上,所以我们应该给它两个跨度以使下一个项目下降到下一行

我还发布了一篇关于this的详细博文,其中有一些更好的插图和实际代码中的问题解决方案