2016-03-30 21 views
-2

Ich bin sehr seltsam Problem konfrontiert. Ich muss einige Daten senden, um mit Volley-Bibliothek im Json-Format zu trennen. Ich werde Daten von einer anderen API erhalten und sie an den Server weiterleiten. Jetzt Problem ist, dass jedes Mal, wenn ich Funktion anrufe, um JSON zu schaffen, es letzten Wert von der Liste erhalten wird.Android - Holen Sie sich den letzten Wert aus der Liste

Hier Code ist jsonarray

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

Innen Onclick der Schaltfläche konvertieren Ich jsonarray erstellen - Code unten

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

Der Wert I angemeldet ist richtig kommt aber sch_id in mainObejct Duplikat kommt, ist hier json das wurde erstellt

{ 
    "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" 
    } 
    ] 
} 

Hier kommt sch_id immer 738 während - Log.e (TAG, "ID:" + ID); ID kommt anders wie einige Zeit - 738, 607, 521 usw. - Das kommt richtig. Hilf mir, die richtige sch_id in Array zu bekommen. Danke im Voraus.

+0

Versuchen Sie, diese 'jsonBody = mainObject.getJsonArray ("A"),' Wie pro Ihre json. –

+0

Wo mache ich das? – Shane

+0

Können Sie angeben, was 'sipDetailses' enthält? –

Antwort

1

Ich denke, Sie erstellen Objekt für Ihr JSONObject außerhalb der Schleife. Erstelle Instanz für dein Objekt (object = new JSONObject();) for inside for loop. wie unten

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

    // do your operations 

    jsonBody.put(object); 

}

+0

enthält. Danke, es funktioniert. – Shane

Verwandte Themen