2017-02-06 46 views
2

我在使用GridLayoutManager填充回收器视图时遇到问题。首先按行填充GridLayoutManager,然后按列填充

我需要完成第一行,完成之后,转到第二行。我做了一个算法,对列表重新排序,以便它能够正确显示,并且我可以在不做任何映射的情况下点击项目。这工作正常,但所有项目都可以在屏幕上显示而不滚动时出现问题。

例如,我有4个项目,我需要在2行网格布局(水平布局)中显示它们。屏幕上有3个项目的空间,所以我需要它们在第一行,而第四个项目应该是第二行中的唯一一个。

为了让你的照片我都默认:

0 2 
1 3 

而我需要的是:

0 1 2 
3 

任何想法?

编辑: 按照要求,这里是我使用的代码:

GridLayoutManager layoutManager = new GridLayoutManager(getContext(),2,LinearLayoutManager.HORIZONTAL, false); 

回答

0

当您要定义gridLayoutManager,你指定的列

RecyclerView rView = new RecyclerView(this); 
rView.setLayoutManager(new GridLayoutManager(context, <your number of columns>)); 

数量设置此值为3(在你的情况下)将导致三列,两行。您的阵列适配器从左到右填充字段,然后从上到下填充字段。

+0

如果失败,您可以将“null”或“”添加到您的数组,直到它被您想要的列数(此例中总共为6个元素)均匀分割为止。这将在第二行填充两个额外的列,但没有任何内容,但仍然将它们添加到布局。 – keag

+0

第一种方法是我尝试过并且没有工作的方法。默认情况下,它不会显示您提到的项目(查看问题如何订购项目)。第二种方法不应该工作! 我结束重新排列整个列表以匹配预期的结果,但没有一个明确的解决方案来解决这个问题。 无论如何,谢谢! –

+0

你如何声明你的gridLayoutManager,你可以用你现有的代码更新你的答案吗? – keag