GridLayoutManager中setSpanSizeLookup()的基本操作,实现布局多样化

  • Post author:
  • Post category:其他




效果图

在这里插入图片描述

上面布局格式为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 版权协议,转载请附上原文出处链接和本声明。