Java ArrayList在循环时返回相同的值
我有一个arraylist的毒品目标。我在Java ArrayList在循环时返回相同的值,java,android,arraylist,Java,Android,Arraylist,我有一个arraylist的毒品目标。我在药物列表中有5个对象 因此drugsList.size()返回5。有5种药物属于drugsList,分别为drugName、description和类别 我想返回5次带有名称、说明和类别的药品片段。现在的情况是,它创建了5次片段,但每个片段都具有相同的名称、描述和类别值。我100%确信清单中包含5种药物,它们有5种不同的名称/类别/描述 @Override public Fragment getItem(int position) { Drug
药物列表中有5个对象
因此drugsList.size()
返回5。有5种药物属于drugsList
,分别为drugName
、description
和类别
我想返回5次带有名称
、说明
和类别的药品片段
。现在的情况是,它创建了5次片段,但每个片段都具有相同的名称
、描述
和类别
值。我100%确信清单中包含5种药物,它们有5种不同的名称/类别/描述
@Override
public Fragment getItem(int position) {
DrugsFragment df = null;
for(int i= 0; i < drugsList.size() ; i++) {
drugName = drugsList.get(i).getName();
description = drugsList.get(i).getDescription();
category = drugsList.get(i).getCategory();
df = DrugsFragment.newInstance(drugName, description,category);
}
return df;
}
@覆盖
公共片段getItem(int位置){
DrugsFragment df=null;
对于(int i=0;i
当返回newInstance
时,我是否在这里做错了什么 每次调用该函数时,循环遍历列表并创建Fragment
的新实例,然后返回从该函数创建的最后一个Fragment
相反,您只需将物品从药品列表中取下您想要的位置即可
@Override
public Fragment getItem(int position) {
String drugName = drugsList.get(position).getName();
String description = drugsList.get(position).getDescription();
String category = drugsList.get(position).getCategory();
return DrugsFragment.newInstance(drugName, description,category);
}
要获得5分,您可以执行以下操作:
for(int i= 0; i < drugsList.size() ; i++) {
var Fragment = getItem(i);
}
for(int i=0;i
您需要为getItem()
提供访问此列表的方法,也许上面的循环可能位于另一个类方法中 返回一个列表
而不是一个DrugFragment
。这不是我现在设置项目的方式中的选项。我想了解出了什么问题,而不是仅仅尝试一些东西。你创建了5个片段,每次只使用最后一个片段,不管传递的位置如何。我有点不确定为什么会有一个循环。之所以会有循环,是因为每次都重写df
中的内容,所以它会返回最后一个。好吧,你必须明白,你在为循环声明一个DrugFragment
并在每次迭代时重新初始化它。无论您当前在for
循环中执行什么操作,您只有一个药品片段
。如果希望/需要多个片段,请返回列表
。如果您不能满足您所说的任何要求,请在DrugFragment
或其他类中存储一个包含适当数据的列表,并将此列表传递给您的单个DrugFragment
。如果这也不是一个选项,那么可能你的设计被破坏了。好的,这是一个明确的答案,谢谢。我尝试循环,因为我想让它在数组中循环,每次取5个值并将它们分配给一个片段。我完全理解你的逻辑,但我不知道如何设置。也许可以展示一些预编码如何做到这一点?这是最简单的实现方法。谢谢你的帮助和解释,罗伯特。