

我需要9 square单元,然后是long rectangle单元,然后是9 square单元。我应该如何设置LinearLayoutManager以将其传递给RecyclerView
我尝试了两种方式:
LinearLayoutManager llm2 = new LinearLayoutManager(App.getContext());
llm2.setOrientation(LinearLayoutManager.VERTICAL);但在这里,所有的项目都在单独的一行中。
如果我将其设置为.HORIZONTAL,那么所有元素都将在一个很长的行中。
试用过GridLayoutManager
RecyclerView.LayoutManager glm = new GridLayoutManager(App.getContext(), 3);但这里不知道如何处理长项。
有什么想法吗?
发布于 2017-02-15 05:09:49
你可以创建一个跨度为3的GridLayoutManager,并在你的spanSizeLookup中为你的“长元素”返回3的大小:
final int spanCount = 3;
GridLayoutManager glm = new GridLayoutManager(this, spanCount);
recyclerView.setLayoutManager(glm);
glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
// You could also use adapter.getItemViewType(position) and check if
// the type of the view is "LONG_VIEW" instead of using a modulo
if (position % 10 == 9) {
return spanCount;
} else {
return 1;
}
}
});发布于 2017-02-15 05:06:46
您可以在每9个项目之后使用setSpanCount,您将获得一行单元格。
因此,基本上您必须在数组中放入一个“空项目”,然后将其传递到适配器中,以指示整行,因为回收视图仍然需要知道这一点才能显示它。
示例:
数组
[data,data,data,data,data,data,data,data,data,"",data,data,etc...]https://stackoverflow.com/questions/42236120
复制相似问题