效果图
上面布局格式为1-2-1-2,你可以使用itemtype做多布局,但是还有一种更简单的方法就是使用GridLayoutManager的setSpanSizeLookup()函数
代码如下
适配器和布局文件的代码就不贴出了,只贴出关键代码
private void initView() {
recyclerView = findViewById(R.id.recyclerView);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this , 2);
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int i) {
if (i == 0 || i == 3 || i == 6){
return 3;
}else {
return 1;
}
}
});
recyclerView.setLayoutManager(gridLayoutManager);
testAdapter = new TestAdapter(list , this);
recyclerView.setAdapter(testAdapter);
}
setSpanSizeLookup
函数传入一个
GridLayoutManager.SpanSizeLookup
对象,其内部有一个抽象函数
getSpanSize()
,你可以设置返回的数值,让当前的item占据几个位置,
当然返回的int型数值只能小于等于GridLayoutManager设置span的个数
,比如每行item的个数为5个,然后你设置返回6,就会报如下的错误,Google比你想的当然多了。
当然,在给每个item设置占位大小的时候当然不能像上述代码那样直接用位置区分,在实际编写时应该根据设置的标记位来具体区分。
java.lang.IllegalArgumentException: Item at position 0 requires 3 spans but GridLayoutManager has only 2 spans.
代码链接—>github
版权声明:本文为tiankongcheng6原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。