Android - 从列表中获取最后一个值

时间:2016-03-30 07:39:14

标签: android arrays android-volley

我面临着非常奇怪的问题。 我必须使用Json格式的volley库将一些数据发送到服务器。我将从另一个API获取数据并将其转发到服务器。现在的问题是,每当我调用函数来创建JSON时,它将从列表中获取最后一个值。

以下是转换jsonarray的代码

array = [:b, :a] 
{ a: 23, b: 12 }.sort_by { |k, _| array.index(k) }.to_h
#=> {:b=>12, :a=>23}

在onclick按钮中我创建了jsonarray - 下面的代码

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

我记录的值正确,但mainObejct中的sch_id重复,这里是创建的json

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

这里sch_id总是来738而 - Log.e(TAG,&#34; ID:&#34; + ID); ID会有所不同 - 比如738,607,521等 - 这是正确的。 帮我在数组中得到正确的sch_id。在此先感谢。

1 个答案:

答案 0 :(得分:1)

我认为你是在循环之外为你的JSONObject创建对象。 为对象创建实例(object = new JSONObject();) for inside for循环。如下所示

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

    // do your operations

    jsonBody.put(object);

}