RecyclerView的单条目和多条目的使用

本文介绍了如何在Android中使用RecyclerView来显示单条目和多条目内容。首先,需要导入相应的库,然后创建布局。在创建Adapter时,针对单条目,我们继承RecyclerView.Adapter并实现相关方法,如onCreateViewHolder、onBindViewHolder和getItemCount。对于多条目,我们需要额外创建多个ViewHolder类,并重写getItemViewType方法来确定要显示的视图类型。
摘要由CSDN通过智能技术生成

1.导包 implementation ‘com.android.support:recyclerview-v7:28.0.0’

2.创建布局
在这里插入图片描述

在这里插入图片描述

4.得到数据后请设置Adapter
///单条目
4.1 创建Adapter 类 让他继承与RecyclerView.Adapter
4.2 其他详情如下:
public class Adapter extends RecyclerView.Adapter {
private ArrayList list=new ArrayList<>();
private Context context;
public Adapter(ArrayList list, Context context) {
this.list = list;
this.context = context;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.item, null);
//这里的 holder不用踢出去 如下:
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
//这里需要哪个ViewHolder 就强制转换成 哪个ViewHolder
ViewHolder holder = (ViewHolder)viewHolder;
holder.name1.setText(list.get(i).getTitle());
holder.name2.setText(list.get(i).getPrice());
holder.name3.setText(list.get(i).getTime());
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private final TextView name2;
private final TextView name3;
private final TextView name1;
public ViewHolder(@NonNull View itemView) {
super(itemView);
//寻找插件
name1 = itemView.findViewById(R.id.name1);
name2 = itemView.findViewById(R.id.name2);
name3 = itemView.findViewById(R.id.name3);
}
}
}

  1. ///多条目

    public class Adapter extends RecyclerView.Adapter {
    private ArrayList list=new ArrayList<>();
    private Context context;
    public Adapter(ArrayList list, Context context) {
    this.list = list;
    this.context = context;
    }
    //1.有几个条目要展示 就写几个ViewHolder类 每个ViewHolder类要继承RecyclerView.ViewHolder
    //2.展示多条目得写一个方法 getItemViewType
    //3.getItemViewType的使用:你想展示几个条目就在getItemViewType中 retrun position%几;
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    if (getItemViewType(i)==0){
    View view = LayoutInflater.from(context).inflate(R.layout.item, null);
    //这里的holder不准踢出去
    ViewHolder holder = new ViewHolder(view);
    return holder;
    }
    else {
    View view = LayoutInflater.from(context).inflate(R.layout.item1, null);
    //这里的holder不准踢出去
    ViewHolder1 holder1 = new ViewHolder1(view);
    return holder1;
    }
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
    if (getItemViewType(i)==0){
    //这里需要哪个ViewHolder 就强制转换成 哪个ViewHolder
    ViewHolder holder=(ViewHolder) viewHolder;
    holder.name1.setText(list.get(i).getTitle());
    holder.name2.setText(list.get(i).getPrice());
    holder.name3.setText(list.get(i).getTime());
    }else{
    //这里需要哪个ViewHolder 就强制转换成 哪个ViewHolder
    ViewHolder1 holder=(ViewHolder1) viewHolder;
    holder1.name1.setText(list.get(i).getTitle());
    holder1.name2.setText(list.get(i).getPrice());
    holder1.name3.setText(list.get(i).getTime());
    }
    }
    @Override
    public int getItemViewType(int position) {
    return position%2;
    }
    @Override
    public int getItemCount() {
    return list.size();
    }
    public class ViewHolder extends RecyclerView.ViewHolder{
    private final TextView name2;
    private final TextView name3;
    private final TextView name1;
    public ViewHolder(@NonNull View itemView) {
    super(itemView);
    name1 = itemView.findViewById(R.id.name1);
    name2 = itemView.findViewById(R.id.name2);
    name3 = itemView.findViewById(R.id.name3);
    }
    }
    public class ViewHolder1 extends RecyclerView.ViewHolder{
    private final TextView name2;
    private final TextView name3;
    private final TextView name1;
    public ViewHolder1(@NonNull View itemView) {
    super(itemView);
    name1 = itemView.findViewById(R.id.name4);
    name2 = itemView.findViewById(R.id.name5);
    name3 = itemView.findViewById(R.id.name6);
    }
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值