recyclerView中的setSpanSizeLookup规律

本文介绍使用RecyclerView实现复杂布局的方法,通过调整GridLayoutManager的参数和SpanSizeLookup返回值控制列数,实现了动态变化的网格布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天看了一下http://blog.youkuaiyun.com/liaoinstan/article/details/52671101点击打开链接这个recyclerview实现复杂布局的文章找到了一个规律,先看代码

mCredit.setLayoutManager(new GridLayoutManager(this,8));

mCreditAdapter=new BaseQuickAdapter<SafetyBean,BaseViewHolder>(R.layout.list_item_credit,data) {
    @Override
    protected void convert(BaseViewHolder helper, SafetyBean item) {
        helper.setText(R.id.safety_A,item.getName());
    }
};
mCreditAdapter.setSpanSizeLookup(new BaseQuickAdapter.SpanSizeLookup() {
    @Override
    public int getSpanSize(GridLayoutManager gridLayoutManager, int position) {
        return 2//这里返回的数据可以在构造函数负责一个count 传入值获取不同的列数;
    }
});

mCredit.setAdapter(mCreditAdapter);

看了代码我直接说规律就是 列数=gridlayoutmanager中的参数spanCount除以setSpanSizeLookup方法返回的数 也就是8/2

mData=new ArrayList<>();
for (int i = 0; i <3; i++) {
    HomeBean homeBean=new HomeBean(R.mipmap.ic_launcher,"免费",HomeListAdapter.TYPE_HEAD,1);
    mData.add(homeBean);
}
mData.add(new HomeBean("推荐",HomeListAdapter.TYPE_MIDDLE,3));
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),3));//一开始就设置需要多少列数
//写到recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),3));后面
mAdapter.setSpanSizeLookup(new BaseQuickAdapter.SpanSizeLookup() {
    @Override
    public int getSpanSize(GridLayoutManager gridLayoutManager, int position) {
        return mData.get(position).getCount();//根据传入进来的值来改变列数
    }
});



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值