我需要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);
但是这里不知道如何处理长项目。
有什么想法吗?
答案 0 :(得分:1)
你可以在每9个项目之后使用setSpanCount,你将得到一行是一个单元格。
所以基本上你必须把你传入适配器的数组放入"空项"这将表示一个完整的行,因为recyclerview仍然需要知道显示它
示例:
阵列
[data,data,data,data,data,data,data,data,data,"",data,data,etc...]
答案 1 :(得分:0)
您可以创建一个跨度为3的GridLayoutManager,并在spanSizeLookup中为“long元素”返回大小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;
}
}
});