Java recyclerview中的不同对象
早上好, 我需要制作一个包含不同类对象的列表,并在这个单一回收器视图中列出它们。例如:回收产品,我需要列出土豆、香蕉和牛奶。显然,它们是不同的对象 我不知道怎么做,因为方法是onBindViewHolder。我需要从列表中获取项目并创建一个对象,以便恢复数据,但我不知道它是牛奶、香蕉还是土豆 我的想法是:用类型字符串Atribute创建产品类,这样我就可以从列表中恢复项目,创建一个对象产品,获取类型值,如果等于“banana”,我就创建一个banana对象并恢复数据值。这是一个好的选择吗?你可以这样试试Java recyclerview中的不同对象,java,android,list,android-recyclerview,Java,Android,List,Android Recyclerview,早上好, 我需要制作一个包含不同类对象的列表,并在这个单一回收器视图中列出它们。例如:回收产品,我需要列出土豆、香蕉和牛奶。显然,它们是不同的对象 我不知道怎么做,因为方法是onBindViewHolder。我需要从列表中获取项目并创建一个对象,以便恢复数据,但我不知道它是牛奶、香蕉还是土豆 我的想法是:用类型字符串Atribute创建产品类,这样我就可以从列表中恢复项目,创建一个对象产品,获取类型值,如果等于“banana”,我就创建一个banana对象并恢复数据值。这是一个好的选择吗?你可以
抽象类BaseObject{
}
类扩展了BaseObject{
}
类B扩展了BaseObject{
}
类C扩展了BaseObject{
}
类TestRecycleServiceWatper扩展了RecycleView.Adapter{
............................................
列表=新的ArrayList();
................................................
@凌驾
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder,int位置){
BaseObject项=list.get(位置);
如果(A的项目实例){
A=(A)项目;
}else if(B的项目实例){
B=(B)项目;
}
}
.........................................................
...........................
}
你可以用这种方法试试
抽象类BaseObject{
}
类扩展了BaseObject{
}
类B扩展了BaseObject{
}
类C扩展了BaseObject{
}
类TestRecycleServiceWatper扩展了RecycleView.Adapter{
............................................
列表=新的ArrayList();
................................................
@凌驾
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder,int位置){
BaseObject项=list.get(位置);
如果(A的项目实例){
A=(A)项目;
}else if(B的项目实例){
B=(B)项目;
}
}
.........................................................
...........................
}
您可以创建一个接口产品
,其中每个类土豆
,香蕉
和牛奶
将实现此接口,因此适配器将包含一个产品的列表
如果所有项目都以相同的方式表示(例如名称+图像)-将这些属性添加到界面中,一切都会变得简单
如果您需要以不同方式处理每个类(例如,您需要一个只有classMilk
具有的特定属性),您可以在onBindViewHolder
方法上检查哪个类是您当前的产品,如下所示:
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
Product currentProduct = productLst.get(position);
if (currentProduct instanceof Banana) {
// this is a banana
} else if (currentProduct instanceof Milk){
// this is milk
} else if (currentProduct instanceof Potato){
// this is Potato
}
}
您可以创建一个接口
产品
,其中每个类土豆
,香蕉
和牛奶
将实现此接口,因此适配器将包含产品的列表
如果所有项目都以相同的方式表示(例如名称+图像)-将这些属性添加到界面中,一切都会变得简单
如果您需要以不同方式处理每个类(例如,您需要一个只有classMilk
具有的特定属性),您可以在onBindViewHolder
方法上检查哪个类是您当前的产品,如下所示:
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
Product currentProduct = productLst.get(position);
if (currentProduct instanceof Banana) {
// this is a banana
} else if (currentProduct instanceof Milk){
// this is milk
} else if (currentProduct instanceof Potato){
// this is Potato
}
}
您应该研究多态性。我建议您应该创建一个模型类(对象类),例如MainObject.class。现在,您需要创建另一个类的对象,让我们以Banana类为例,因此需要在MainObject中添加Banana Banana=new Banana()。您应该研究多态性。我建议您应该创建一个模型类(对象类),例如,让我们说MainObject.class。现在您需要创建另一个类的对象,让我们以香蕉类为例,因此需要在MainObject中添加Banana Banana=new Banana()。感谢您的帮助,这解决了问题。感谢您的帮助,这解决了问题。