好吧这可能看起来很容易,但它已经困扰我好几天了,老实说,我不知道为什么索引不会增加并得到其他数据。我不知道除return
之外的哪个地方。我将它放在2行中,第一行只提供数据库中的第一行数据,第二行只提供数据库中的最后一行。 (见下面注释掉的行)。如何获得适合if语句的每一行?
这是我的代码:
public Object[] populateTable(ArrayList<Outlet> outletList, String selection, int size, int monthCtr, String selDay){
for(int i = 0; i<outletList.size(); i++){
if(outletList.get(i).getCity().equalsIgnoreCase(selection)){
if(outletList.get(i).getStatus().equals("ACTIVE")){
bar = outletList.get(i).getBarangay();
code = Integer.toString(outletList.get(i).getCode());
name = outletList.get(i).getName();
data = new Object[]{bar, name, code};
//return data ->gives the first one in the database
}
}
}
}
//return data -> gives the last one in the database
}
答案 0 :(得分:3)
您需要将所有结果保存在另一个数组中,然后将其返回。
public Object[] populateTable(ArrayList<Outlet> outletList, String selection, int size, int monthCtr, String selDay)
{
List<object> result = new List<object>();
for(int i = 0; i<outletList.size(); i++)
{
if(outletList.get(i).getCity().equalsIgnoreCase(selection))
{
if(outletList.get(i).getStatus().equals("ACTIVE"))
{
bar = outletList.get(i).getBarangay();
code = Integer.toString(outletList.get(i).getCode());
name = outletList.get(i).getName();
data = new Object[]{bar, name, code};
result.Add(data);
}
}
}
return result.ToArray();
}
答案 1 :(得分:0)
您的问题如下:
您的第一个return语句将退出for
循环,然后返回
第一个对象,如结果所示。
您的第二份退货声明,正如您所解释的那样
返回在for
循环中迭代的最后一条记录。
您的第三个问题是data = new Object[]{bar, name,
code};
。在每个循环之后,您将数据对象实例化为新的
对象数组,而不是将值添加到数组,所以基本上,你总是创建一个对象数组,其中包含1个项目,最后一个被迭代。
如果要返回数组中的所有对象,请尝试以下操作:
public Object[] populateTable(ArrayList<Outlet> outletList, String selection, int size, int monthCtr, String selDay)
{
Object[] result = new Object[outletList.size()];
for (int i = 0; i < outletList.size(); i++)
{
if (outletList.get(i).getCity().equalsIgnoreCase(selection))
{
if (outletList.get(i).getStatus().equals("ACTIVE"))
{
bar = outletList.get(i).getBarangay();
code = Integer.toString(outletList.get(i).getCode());
name = outletList.get(i).getName();
var data = new { bar, name, code };
result[i] = data;
}
}
}
return result;
}
答案 2 :(得分:0)
试试这个:
public List<Outlet> populateTable(ArrayList<Outlet> outletList, String selection, int size, int monthCtr, String selDay){
List<Outlet> data = new ArrayList<Outlet>();
for(int i = 0; i < outletList.size(); i++){
if(outletList.get(i).getCity().equalsIgnoreCase(selection) &&
outletList.get(i).getStatus().equals("ACTIVE")){
data.add(outletList.get(i));
}
}
return data;
}