2016-05-04 3 views
0

これは簡単かもしれませんが、数日間私の心を傷つけていたと私は正直なところ、インデックスが増加し、他のデータを取得しない理由を知らない。私はreturnしかしどこに知りません。私はそれを2行に配置し、最初の行はデータベースからの最初の行のみを与え、2番目の行はデータベースから最後の行を与えます。 (下記のコメント行を参照)。どのようにif文に適合する各行を取得するのですか?あなたが別の配列内のすべての検索結果を保存し、代わりにそれを返す必要がforのメソッドのインデックスが増加していません

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 
} 

答えて

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(); 
} 
+0

は(result.pushないでしょう)こともっといい方法 ? –

+0

@NikhileshKVうん、ちょうどifに気づいた。 –

+0

cool。私は今upvoteすることができます。 :D –

0

あなたの問題は以下の通りです:

  1. あなたの最初のreturn文、forループを終了し、あなたの結果が示されているように、 に最初のオブジェクトを返します。

  2. あなたが説明したように、 は、forループで反復された最後のレコードを返します。

  3. あなたの3番目の問題はこの行にあります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; 
    } 
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; 
} 
関連する問題