我有一个药物的arraylist对象。我在drugsList
中有5个对象。
因此,drugsList.size()
会返回5. drugsList
个drugName
,description
和category
。
我希望使用DrugsFragment
,name
和description
与category
一起返回5次。现在发生的是它创建片段5次,但每个片段具有相同的name
,description
和category
值。我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
时,我在做错了吗?
答案 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()
一种访问此列表的方法,也许上面的循环可能在另一个类方法中。