使用 json 数据根据第一个微调器选择填充第二个微调器

populate second spinner based on first spinner selection with json data

我有activity,它提供了一些地址注册表。 有以下区域微调器:

  1. 省微调
  2. 城市微调器
  3. 区微调器
  4. 乡村纺车

我已经有了从 JSON 获取数据的方法,这是我的目标: "Populate the City Spinner based on selected item on Province Spinner, and same as the rest for District Spinner and Village Spinner".

由于隐私问题,我无法在此处 post 我的完整 java class 代码。

我正在使用改造 2 从 JSON 检索数据,这是我获取省份数据的方法:

private void initSpinnerProvinsi() {
    apiInterface.getProvinsi()
            .enqueue(new Callback<GetProvinsiResponse>() {
                @Override
                public void onResponse(Call<GetProvinsiResponse> call, Response<GetProvinsiResponse> response) {
                    if (response.isSuccessful()){
                        List<GetProvinsi> provinsiList = response.body().getSemuaprovinsi();
                        List<String> listSpinnerProvinsi = new ArrayList<>();
                        for (int i = 0; i < provinsiList.size(); i++){
                            listSpinnerProvinsi.add(provinsiList.get(i).getNama());

                            String idkota = provinsiList.get(i).getId();
                            Log.d("idkota ", idkota);
                        }

                        //set result into spinner adapter
                        ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,
                                R.layout.support_simple_spinner_dropdown_item, listSpinnerProvinsi);
                        adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
                        spinner_provinsi.setAdapter(adapter);
                    }
                    else {
                        Log.d("onResponse: ", "gagal memuat data provinsi");
                    }
                }

                @Override
                public void onFailure(Call<GetProvinsiResponse> call, Throwable t) {
                    Toast.makeText(mContext, "Koneksi gagal, silahkan cek koneksi internet anda",
                            Toast.LENGTH_SHORT).show();
                }
            });
}

这是我的 ProvinceSpinner setOnItemSelected 方法:

spinner_provinsi.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String selectedName = parent.getItemAtPosition(position).toString();
            //request data


        }

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

        }
    });

这是我的 json 来自 postman 的 ProvinceSpinner 数据:

{
  "error": false,
  "message": "Berhasil mendapatkan data provinsi",
  "semuaprovinsi": [
    {
      "id": "11",
      "nama": "Aceh"
    }
  ]
}

这是我的 json 来自 postman 的 CitySpinner 数据:

{
  "error": false,
  "message": "Berhasil mengambil data kabupaten",
  "daftar_kecamatan": [
    {
      "id": "1101",
      "id_prov": "11",
      "nama": "Kab. Simeulue"
    }
  ]
}

请哪位大侠指教。 谢谢。

已解决,检查此代码:

private void initSpinnerProvinsi() {
    apiInterface.getProvinsi()
            .enqueue(new Callback<GetProvinsiResponse>() {
                @Override
                public void onResponse(Call<GetProvinsiResponse> call, Response<GetProvinsiResponse> response) {
                    if (response.isSuccessful()){
                        final List<GetProvinsi> provinsiList = response.body().getSemuaprovinsi();
                        List<String> listSpinnerProvinsi = new ArrayList<String>();
                        for (int i = 0; i < provinsiList.size(); i++){
                            listSpinnerProvinsi.add(provinsiList.get(i).getNama());
                        }

                        //set result into spinner adapter
                        ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,
                                R.layout.support_simple_spinner_dropdown_item, listSpinnerProvinsi);
                        adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
                        spinner_provinsi.setAdapter(adapter);

                        spinner_provinsi.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                            @Override
                            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                                String selectedName = parent.getItemAtPosition(position).toString();
                                //request data
                                String idkota = provinsiList.get(position).getId();
                                Log.d("idkota :", idkota);

                                if (selectedName != null)
                                    spinner_kota.setEnabled(true);
                                    initSpinnerKota(idkota);
                            }

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

                            }
                        });
                    }
                    else {
                        Log.d("onResponse: ", "gagal memuat data provinsi");
                    }
                }

                @Override
                public void onFailure(Call<GetProvinsiResponse> call, Throwable t) {
                    Toast.makeText(mContext, "Koneksi gagal, silahkan cek koneksi internet anda",
                            Toast.LENGTH_SHORT).show();
                }
            });
}