заселить провинцию и город в два счетчика используя json - PullRequest
0 голосов
/ 30 сентября 2018

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

Любое руководство будет полезным

заранее спасибо

1 Ответ

0 голосов
/ 30 сентября 2018

Теперь с новым 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там, чтобы вы могли понять это лучше.

...