我有两个微调器,第一个微调器包含省名,第二个微调器取决于包含城市名称的第一个微调器值。我为此应用程序使用json并阅读了一些文章和摘要,但我做对了
这是我的json链接:Link

任何指南都会有所帮助

提前致谢

最佳答案

现在,使用新的json,最终代码应如下所示:

您有一个City

public class City {
    private String city_id;
    private String city_name;
    private String province;
    //Setters and Getters


然后,使用此City类可以创建JSONResponse

public class ResponseJSON {
    private String province_name;
    private String province_id;
    private List<City> city = null;
    //Setters and Getters


这是您调用API并将信息添加到Spinner的方式

apiService = ApiClient.getClient().create(ApiInterface.class);

        Call<Map<String, ResponseJSON>> call = apiService.getProvinceAndCity();
        call.enqueue(new Callback<Map<String, ResponseJSON>>() {
            @Override
            public void onResponse(Call<Map<String, ResponseJSON>>call, Response<Map<String, ResponseJSON>> response) {
                responseJson  = response.body();
                for(Map.Entry<String, ResponseJSON> e : responseJson.entrySet())
                {
                    provincesList.add(e.getKey());
                    for(City c : e.getValue().getCity()){
                        citiesList.add(c.getCityName());
                    }
                }
                createAdapter();
            }

            @Override
            public void onFailure(Call<Map<String, ResponseJSON>>call, Throwable t) {

            }
        });


然后,您必须检测OnItemSelectedListener事件,因此您可以创建一个方法来执行此操作,并根据您所在的省更新城市列表

private AdapterView.OnItemSelectedListener provinceListener = new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            citiesList.clear();
            String provinceSelected = spinner_province.getItemAtPosition(position).toString();
            for(Map.Entry<String, ResponseJSON> e : responseJson.entrySet())
            {
                if(e.getKey().equals(provinceSelected)){
                    for(City c : e.getValue().getCity()){
                        citiesList.add(c.getCityName());
                    }
                }
            }
            cityAdapter.notifyDataSetChanged();
        }

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

        }
    };


希望对您有帮助,我将ProvinceAndCity2SpinnerFromJson project放在此处,以便您可以更好地理解它。

09-11 22:18