将多个不同的CardViews添加到RecyclerView [英] Adding multiple different CardViews to 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 ViewCard
and 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()
andonCreateViewHolder
() 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屋!