заполнить второй счетчик на основе выбора первого счетчика с json залп данных - PullRequest
0 голосов
/ 09 января 2020

У меня есть деятельность, которая предоставляет некоторую форму регистрации адреса. Существуют следующие региональные счетчики:

  1. Счетчик постоянных
  2. Спиннер Ward

У меня уже есть способ получить данные из JSON, вот Моя цель: "Заполнить счетчик прихода на основе выбранного элемента в счетчике постоянства". Я использую залп для извлечения данных из JSON, вот мой метод получения данных постоянных:

private void constituencyParse(){

        String url = "http://172.16.1.218/10143d/public/api/respective-constituency/180/1/10000000";

        final JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new com.android.volley.Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("data");
                            ArrayList<ConstituencyAdapter> constituencySpinners = new ArrayList<ConstituencyAdapter>();



                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject jsonObject = jsonArray.getJSONObject(i);

                                String constituency = jsonObject.getString("424");
                                String constituencyId = jsonObject.getString("423");

                                constituencySpinners.add(new ConstituencyAdapter(constituencyId,constituency));



                            }
                            ArrayAdapter<ConstituencyAdapter> spinnerArrayAdapter = new ArrayAdapter<ConstituencyAdapter>(ArmTownDetailsActivity.this,
                                    android.R.layout.simple_spinner_dropdown_item,constituencySpinners);
                            mSpinnerConstituency.setAdapter(spinnerArrayAdapter);


                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new com.android.volley.Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });

        mQueue.add(request);
    }

Кроме того, вот мой метод получения данных Уорда:

private void wardParse(){

        String url = "http://172.16.1.218/10143b/public/api/respective-wards/180";

        final JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new com.android.volley.Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("data");
                            ArrayList<WardSpinner> wardSpinners = new ArrayList<WardSpinner>();


                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject jsonObject = jsonArray.getJSONObject(i);

                                String ward = jsonObject.getString("431");
                                String wardId = jsonObject.getString("426");

                                wardSpinners.add(new WardSpinner(wardId,ward));



                            }
                            ArrayAdapter<WardSpinner> spinnerArrayAdapter = new ArrayAdapter<WardSpinner>(ArmTownDetailsActivity.this,
                                    android.R.layout.simple_spinner_dropdown_item,wardSpinners);
                            mSpinnerWard.setAdapter(spinnerArrayAdapter);
                            //mSpinner.setAdapter(new ArrayAdapter<String>(TownActivity.this, android.R.layout.simple_spinner_dropdown_item, wardName));
                            // mConstituency

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new com.android.volley.Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });

        mQueue.add(request);
    }

и это мой метод ConstituencySpinner setOnItemSelected:

 mSpinnerConstituency.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
               ConstituencyAdapter constituencyAdapter = (ConstituencyAdapter) parent.getItemAtPosition(position);
      }

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

            }
        });

вот мои json данные для ConstituencySpinner от почтальона: обратите внимание, ключ 424 - это имя избирательного округа

{
    "data": [
        {
            "419": 18,
            "424": "Garsen"
        },
        {
            "419": 19,
            "424": "Galole"
        },
        {
            "419": 20,
            "424": "Bura"

        }
    ]
}

, и это мои json данные для WardSpinner от почтальона: обратите внимание, ключ 431 - это имя прихода, а 429 - постоянный_идентификатор (внешний ключ)

{
    "data": [
        {
            "426": 92,
            "431": "Kinakomba",
            "429": "019"

        },
        {
            "426": 93,
            "431": "Mikinduni",
            "429": "019"

        },
        {
            "426": 94,
            "431": "Chewani",
            "429": "019"
        },
        {
            "426": 95,
            "431": "Wayu",
            "429": "019"

        }
    ]
}

. Спасибо.

...