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

效果图


上面布局格式为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

你可能感兴趣的:(android开发)