2016-03-30 8 views
-2

私は非常に奇妙な問題に直面しています。 私はJson形式のvolleyライブラリを使っていくつかのデータをサーバに送る必要があります。別のAPIからデータを取得してサーバーに転送します。今問題は、JSONを作成する関数を呼び出すたびにリストから最後の値を取得することです。ここでAndroid - リストから最後の値を取得

は私がjsonarrayを作成し、ボタンのonclickの内部jsonarray

JSONObject mainObject = new JSONObject(); 
JSONArray jsonBody; 
JSONObject object; 

を変換するためのコードです -

btn_rec_invest_now.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Log.e(TAG, "Size of list : " + sipDetailses.size()); 

      jsonBody = new JSONArray(); 
      object = new JSONObject(); 

      for (int i = 0; i < sipDetailses.size(); i++) { 

       String ID = sipDetailses.get(i).getId(); 
       String DATE = sipDetailses.get(i).getSip_date_include(); 
       String AMOUNT = sipDetailses.get(i).getMinimum_investment(); 
       String TENURE = "1"; 

       Log.e(TAG, "ID : " + ID); 
       Log.e(TAG, "DATE : " 
         + sipDetailses.get(i).getSip_date_include()); 
       Log.e(TAG, "AMOUNT : " 
         + sipDetailses.get(i).getMinimum_investment()); 
       Log.e(TAG, "TENURE : " + i); 
       Log.e(TAG, "USER ID : " + "1"); 
       Log.d(TAG, "================="); 

       try { 
        object.put("sch_id", sipDetailses.get(i).getId()); 
        object.put("date", DATE); 
        object.put("amount", AMOUNT); 
        object.put("tenure", TENURE); 
        object.put("user_id", "1"); 

        jsonBody.put(object); 



       } catch (JSONException e) { 

        Log.d(TAG, "EXCEPTION OCCRUDED: " + e.toString()); 
       } 
      } 
      try { 
       mainObject.put("A", jsonBody); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      Log.e("", "JSONBODY : " + mainObject.toString()); 

      sendDetails(mainObject); 
     } 
    }); 

以下のコード私がログインした値が重複してくるmainObejctには正しいがsch_id来て、ここにあります作成されたjson

{ 
    "A": [ 
    { 
     "sch_id": "738", 
     "date": "1,7,15,25", 
     "amount": "5000", 
     "tenure": "1", 
     "user_id": "1" 
    }, 
    { 
     "sch_id": "738", 
     "date": "1,7,15,25", 
     "amount": "5000", 
     "tenure": "1", 
     "user_id": "1" 
    }, 
    { 
     "sch_id": "738", 
     "date": "1,7,15,25", 
     "amount": "5000", 
     "tenure": "1", 
     "user_id": "1" 
    } 
    ] 
} 

ここで、sch_idは常に738 - Log.e(TAG、 "ID:" + ID); IDは738、607、521などのように異なっています - これは間違いありません。 アレイ内の正しいsch_idを取得するのを手伝ってください。前もって感謝します。

+0

以下のように、この 'jsonBody = mainObject.getJsonArray( "A")を試してみてください;'あなたのJSONを1として。 –

+0

ここで私はこれをしますか? – Shane

+0

'sipDetailses'に含まれるものを指定できますか? –

答えて

1

JSONObjectのオブジェクトをループ外に作成していると思います。 inside forループ用にオブジェクトのインスタンスを作成します(object = new JSONObject();) 。

for (int i = 0; i < sipDetailses.size(); i++) { 
    JSONObject object = new JSONObject(); 

    // do your operations 

    jsonBody.put(object); 

}

+0

ありがとう、働いています。 – Shane

関連する問題