Android RecyclerView-如何使GridLayoutManager强制在下一行放置某些项

Android RecyclerView-如何使GridLayoutManager强制在下一行放置某些项,android,android-recyclerview,gridlayoutmanager,Android,Android Recyclerview,Gridlayoutmanager,我使用GridLayoutManager将项目垂直放置在RecyclerView中。 每件物品都有一个跨度。 现在我想让一些项目结束当前行,所以下一个项目被放置在它下面的新行上。每个项目只能占用一个跨度,以便它们都具有相同的宽度 例如: 项目[4]将放在下一行,而不是项目[3]之后。第[3]项后的空间不得使用 我尝试使用SpanSizeLookup,但它的span index对我来说没有任何意义,任何值似乎都没有任何作用 有人能提出解决方案吗 GridLayoutManager manager

我使用GridLayoutManager将项目垂直放置在RecyclerView中。 每件物品都有一个跨度。 现在我想让一些项目结束当前行,所以下一个项目被放置在它下面的新行上。每个项目只能占用一个跨度,以便它们都具有相同的宽度

例如:

项目[4]将放在下一行,而不是项目[3]之后。第[3]项后的空间不得使用

我尝试使用SpanSizeLookup,但它的
span index
对我来说没有任何意义,任何值似乎都没有任何作用

有人能提出解决方案吗

GridLayoutManager manager = new GridLayoutManager(getContext(), 3, LinearLayoutManager.VERTICAL, false);
    manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            return position == 3 ? 3 : 1;
        }
});

每个元素的范围大小默认为1,只需在自定义范围查找中返回位置所需的范围大小。

是否覆盖getItemViewType?SetPansizeLookup为working@matrix:是的,在适配器中,这有关系吗?我的意思是你可以让一个枚举有两个值{ONE_BOX,THREE_BOX}然后在这两种情况下创建viewHolder,但需要两种布局。我的意思是,我不认为你真的能用1个布局实现你想要的,并且实际上“强迫”经理决定一个项目何时应该转到另一行。当你只需要一些布局逻辑时,这不是使用不同项目类型的解决方案。在RecyclerView中,您可以动态插入/删除项目,然后项目将动画化到其新位置,如果我强制某些项目占据3个跨度,则所有项目都将被破坏。此外,我已经有20种项目类型,无法为2个或3个跨度制作不同的布局版本。谢谢,我知道这个选项,但是项目的布局宽度被拉伸到适合3个项目的宽度。我希望该项仅占单个跨度的宽度。请提供一个示例,我可以通过此解决方案查看您的实际问题(动画问题等)。