RecyclerView 加载多种Item布局

需要在Adapter适配器中设置

使用getItemViewType()方法设置根据不同ID来判断设置布局

public class Adapter extends RecyclerView.Adapter<Adapter.MyHolder> {
    private Context context;
    private List<Bean> list;

    public Adapter(Context context, List<Bean> list) {
        this.context = context;
        this.list = list;
    }
    /**
     * recyclerView 加载多布局方法步骤
     * 1. 建两个不同的布局
     * 2. 思路:要提供一个不同的标准,标注  程序选择不同的布局
     */
    @Override
    public int getItemViewType(int position) {
        return list.get(position).getName().contains("2")==true?0:1;
    }
    /**
     * 实例化一个布局
     * @param parent
     * @param viewType <----getItemviewType
     * @return
     */
    @Override
    public Adapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        MyHolder myHolder = null;
        switch (viewType){
            case 0:
                View inflate = LayoutInflater.from(context).inflate(R.layout.layout, null);
                myHolder = new MyHolder(inflate);
                break;
            case 1:
                View inflate1 = LayoutInflater.from(context).inflate(R.layout.layout1, null);
                myHolder = new MyHolder(inflate1);
                break;
        }
        return myHolder;
    }

    @Override
    public void onBindViewHolder(Adapter.MyHolder holder, int position) {
        holder.img.setImageResource(list.get(position).getImg());
        holder.name.setText(list.get(position).getName());
        holder.text.setText(list.get(position).getText());
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    /**
     * 各种布局,进行重用的view
     */
    public class MyHolder extends RecyclerView.ViewHolder {
        private final ImageView img;
        private final TextView name;
        private final TextView text;
        public MyHolder(View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.img);
            name = itemView.findViewById(R.id.name);
            text = itemView.findViewById(R.id.text);
        }
    }
}
223916_bL9y_2663968.jpg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值