RecyclerView的多种布局

(1)实现列表项纵向布局

RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
fudao_recycler.setLayoutManager(layoutManager);

 

(2)实现列表项横向布局

LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(layoutManager);

(3)实现列表项网格布局,即每一行固定几个列表

recyclerView.setLayoutManager(new GridLayoutManager(this, 4));

(4)每行列表显示数目不一样,根据自己的需求来进行设置,但是每行的是固定的。

(5)每个列表项的宽度随文字的大小自适应

使用FlexboxLayoutmanager,需要倒入依赖

implementation 'com.google.android:flexbox:2.0.1'
FlexboxLayoutManager flexboxLayoutManager = new FlexboxLayoutManager(this);
//主轴为水平方向,起点在左端
flexboxLayoutManager.setFlexDirection(FlexDirection.ROW);
//按正常方向换行
flexboxLayoutManager.setFlexWrap(FlexWrap.WRAP);
//定义项目在副轴轴上如何对齐
flexboxLayoutManager.setAlignItems(AlignItems.CENTER);
//多个轴对齐方式
flexboxLayoutManager.setJustifyContent(JustifyContent.FLEX_START);
fudao_recycler.setLayoutManager(flexboxLayoutManager);

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 RecyclerView 多种布局,可以通过重写 getItemViewType 方法,根据不同的数据类型返回不同布局类型,然后在 onCreateViewHolder 方法中根据 viewType 加载不同布局文件,最后在 onBindViewHolder 方法中根据数据类型绑定数据到不同的 ViewHolder 上。 代码示例: ``` public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private List<Object> mDataList; // 枚举不同布局类型 private static final int TYPE_ONE = 1; private static final int TYPE_TWO = 2; public MyAdapter(List<Object> dataList) { mDataList = dataList; } @Override public int getItemViewType(int position) { if (mDataList.get(position) instanceof TypeOneBean) { return TYPE_ONE; } else if (mDataList.get(position) instanceof TypeTwoBean) { return TYPE_TWO; } return super.getItemViewType(position); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case TYPE_ONE: View view1 = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_type_one, parent, false); return new TypeOneViewHolder(view1); case TYPE_TWO: View view2 = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_type_two, parent, false); return new TypeTwoViewHolder(view2); default: throw new IllegalArgumentException("invalid viewType"); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { Object data = mDataList.get(position); if (holder instanceof TypeOneViewHolder) { // 绑定 TypeOneViewHolder 的数据 ((TypeOneViewHolder) holder).bindData((TypeOneBean) data); } else if (holder instanceof TypeTwoViewHolder) { // 绑定 TypeTwoViewHolder 的数据 ((TypeTwoViewHolder) holder).bindData((TypeTwoBean) data); } } @Override public int getItemCount() { return mDataList.size(); } static class TypeOneViewHolder extends RecyclerView.ViewHolder { public TypeOneViewHolder(View itemView) { super(itemView); // 初始化 TypeOneViewHolder 的控件 } public void bindData(TypeOneBean data) { // 绑定 TypeOneViewHolder 的数据 } } static class TypeTwoViewHolder extends RecyclerView.ViewHolder { public TypeTwoViewHolder(View itemView) { super(itemView); // 初始化 TypeTwoViewHolder 的控件 } public void bindData(TypeTwoBean data) { // 绑定 TypeTwoViewHolder 的数据 } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值