使用json

时间:2018-09-30 14:19:09

标签: android json spinner dropdown

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

任何指南都会有所帮助

预先感谢

1 个答案:

答案 0 :(得分:2)

现在使用新的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 s的方式

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放在此处,以便您更好地理解它。