今天看了一下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();//根据传入进来的值来改变列数 } });