循环时,ArrayList返回相同的值

时间:2015-06-17 16:33:41

标签: java android arraylist

我有一个药物的arraylist对象。我在drugsList中有5个对象。

因此,drugsList.size()会返回5. drugsListdrugNamedescriptioncategory

我希望使用DrugsFragmentnamedescriptioncategory一起返回5次。现在发生的是它创建片段5次,但每个片段具有相同的namedescriptioncategory值。我100%确定这些清单包含5种具有5种不同names/category/description的药物。

@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;
}

返回newInstance时,我在做错了吗?

1 个答案:

答案 0 :(得分:3)

每次调用该函数时,循环遍历列表并创建Fragment的新实例,然后返回从函数创建的最后Fragment作为结果。

相反,您只需要将项目从drugsList的所需位置移开。

@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);
}     

您需要给getItem()一种访问此列表的方法,也许上面的循环可能在另一个类方法中。