将多个不同的CardViews添加到RecyclerView [英] Adding multiple different CardViews to RecyclerView

查看:154
本文介绍了将多个不同的CardViews添加到RecyclerView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 RecyclerView ,我想向该 RecyclerView 中添加多个不同的 CardViews .可以说我有 cardview1.xml cardview2.xml cardview3.xml 每个 ViewCard 都有一个Class,该类具有 ViewCard 变量,并且这些类是从我创建的无属性的类CardCard扩展而来的.

I have a RecyclerView and I want to add to that RecyclerView multiple different CardViews. Lets say I have cardview1.xml, cardview2.xml, cardview3.xml each ViewCard has Class that have the variables for the ViewCardand the Classes extends from Class called CardView that I created with no properties.

我想添加到一个 RecyclerView 3个 cardview1 ,2个 cardview2 ,4个 cardview3 .

I want to add to one RecyclerView 3 cardview1, 2 cardview2, 4 cardview3.

我想知道如何在我的 Adapter

CardView1:

CardView1:

public class CardView1 extends CardView {

    public CardView1(){

    }

}

CardView2:

CardView2:

public class CardView2 extends CardView {

    public CardView2(){

    }
}

CardView3:

CardView3:

public class CardView3 extends CardView {
    private String number;

    public CardView3(String number){
        this.number = number;
    }

    public String getNumber() {
        return number;
    }

}

如果您需要我添加任何代码,请告诉我们.

If you need me to add any code please tell.

推荐答案

您可以通过这种方式实现

首先在模型类名称 type ITEM_TYPE_1中添加3个Integer变量,然后ITEM_TYPE_2.根据需要为 type 分配一个值.分别针对视图类型1和视图类型2分别使用ITEM_TYPE_1或ITEM_TYPE_2.

Firstly Add 3 Integer variables in your Model class name type ITEM_TYPE_1 and ITEM_TYPE_2. Assign a value to type According to your need. like ITEM_TYPE_1 or ITEM_TYPE_2 respectively for view type 1 and view type 2.

public class Model{
        String SmsAddress;
        String KoreaImage;
        String seasonNumber;
        Integer type;
        public  static final Integer ITEM_TYPE_1=1;
        public  static final Integer ITEM_TYPE_2=2;

        public String getSmsAddress() {
            return SmsAddress;
        }

        public void setSmsAddress(String smsAddress) {
            SmsAddress = smsAddress;
        }

        public String getKoreaImage() {
            return KoreaImage;
        }

        public void setKoreaImage(String koreaImage) {
            KoreaImage = koreaImage;
        }

        public String getSeasonNumber() {
            return seasonNumber;
        }

        public void setSeasonNumber(String seasonNumber) {
            this.seasonNumber = seasonNumber;
        }

        public Integer getType() {
            return type;
        }

        public void setType(Integer type) {
            this.type = type;
        }
    }

在您的适配器上,您可以覆盖 getItemViewType() onCreateViewHolder ()方法,并通过ViewHolders应用开关盒以实现视图膨胀和数据表示.

At your Adapter you can override getItemViewType() and onCreateViewHolder() methods and apply a switch case for view inflation and Data Presentation through ViewHolders.

@Override
    public int getItemViewType(int position) {
        switch (modelList.get(position).getType()) {
            case 0:
                return Model.ITEM_TYPE_1;
            case 1:
                return Model.ITEM_TYPE_2;
            default:
                return -1;
        }
    }

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view;
    switch (viewType) {
        case Model.ITEM_TYPE_1:
            view = LayoutInflater.from(mContext).inflate(R.layout.item_type_1, parent, false);
            return (new Item1ViewHolder(view));

        case Model.ITEM_TYPE_2:
            view = LayoutInflater.from(mContext).inflate(R.layout.item_type_2, parent, false);
            return (new Item2ViewHolder(view));
        default:
            return null;
    }
}

有关更多详细信息,请参见下面的链接:

For More Detail see the link below:

查看详细信息

这篇关于将多个不同的CardViews添加到RecyclerView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆