我有两个微调器,第一个微调器包含省名,第二个微调器取决于包含城市名称的第一个微调器值。我为此应用程序使用json并阅读了一些文章和摘要,但我做对了 这是我的json链接:Link
任何指南都会有所帮助
预先感谢
答案 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
放在此处,以便您更好地理解它。