я получаю форму имени json response и загружаю его в spinner, и в ответе есть id каждого имени, я должен отправить этот id на сервер через api - PullRequest
0 голосов
/ 11 октября 2019

Я создал класс POJO и установил ответ json на него. Все работает нормально. Проблема в том, что когда я посылаю идентификатор в api, он всегда отправляет первый идентификатор элемента счетчика. PS в отладчике, когда я устанавливаю значение в классе модели, он меняется, это означает, что цикл for работает нормально, но когда я получаю из класса модели, он всегда отправляет первый идентификатор или элемент счетчика, или если я получаю модель формы значения в цикле, он отправляет идентификатортретий элемент, который является последним элементом в счетчике. Вот код, в котором я получаю данные из api categoryid - строка, в которой я получаю значение из класса модели:

    StringRequest strReq = new StringRequest(Request.Method.POST,
            Constant.URL_VEHICLE_CATEGORY, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.d(TAG, response.toString());

            try {
                JSONObject responseObj = new JSONObject(response);

                JSONArray dataArray = responseObj.getJSONArray("data");

                driverCarCategory.clear();

                for (int i = 0; i < dataArray.length(); i++) {

                    DriverCarCategory objItem = new DriverCarCategory();
                    JSONObject dataobj = dataArray.getJSONObject(i);

                    objItem.setName(dataobj.getString("name"));
                    objItem.setId(dataobj.getString("id"));

                    driverCarCategory.add(objItem);

                }


                for (int i = 0; i < driverCarCategory.size(); i++) {
                    carCategory.add(driverCarCategory.get(i).getName());
                    categoryID = driverCarCategory.get(i).getId();

                }

                ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(mContext,
                        android.R.layout.simple_spinner_item, carCategory);

                spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                spinner.setAdapter(spinnerArrayAdapter);// Set the custom adapter to the spinner
                spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        spinnerItem = parent.getItemAtPosition(position).toString();
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {

                    }
                });

            } catch (JSONException e) {

            }
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e(TAG, "Error: " + error.getMessage());

        }
    }) {

        /**
         * Passing user parameters to our server
         * @return
         */
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("userID", driverUserID);
            params.put("sessionID", driverSessionID);

            Log.e(TAG, "Posting params: " + params.toString());

            return params;
        }
    };

    // Adding request to request queue
    MyApplication.getInstance().addToRequestQueue(strReq);
}

Ответ Json:

   { "data": [
{
  "id": "13dsd",
  "name": "ECO",
  "fairPerKm": "20",
  "minimumFair": "150",
  "createdDate": "3423423",
  "modifiedDate": "23423432"
},
{
  "id": "34dd",
  "name": "Standard",
  "fairPerKm": "25",
  "minimumFair": "200",
  "createdDate": "34234233434",
  "modifiedDate": "23423432"
},
{
  "id": "dsf44",
  "name": "Premium",
  "fairPerKm": "30",
  "minimumFair": "250",
  "createdDate": "32423423",
  "modifiedDate": "24234234"
}

],

...