@maximilan

Как сменить данные в spinner, в зависимости от выбора в другом spinner?

В общем суть, есть два спиннера. В одном список брендов машин, в другом уже конкретные наименования автомобилей, которые должны подгружаться, в зависимости от выбора в первом спиннере.
В MainActivity выставляю на первом спиннере OnItemSelectedListener:
brandsSpinner.setOnItemSelectedListener(new BrandsAdapterListener());

Код класса BrandsAdapterListener:
public class BrandsAdapterListener extends MainActivity implements OnItemSelectedListener  {

    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        String selectedBrand = parent.getItemAtPosition(position).toString();
        JSONObject request = new JSONObject();

        try{
            request.put("BrandName", selectedBrand);
            String json = request.toString();
            String response = new CarTask().execute(
                    "*****", // здесь ссылка на апи
                    json ).get();
            JSONObject responseJsonObject = new JSONObject(response);
            JSONArray cars = responseJsonObject.getJSONArray("cars");
            String[] carsNames = new String[cars.length()];
            for (int i =0;i<cars.length();i++){
                JSONObject car = cars.getJSONObject(i);
                carsNames[i] = car.getString("name");
            }
// собственно пытаюсь использовать вот такой код, только видимо не так его готовлю
            ArrayAdapter carAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, carsNames);
            carAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            Spinner carsSpinner = (Spinner) findViewById(R.id.spinner2);
            carsSpinner.setAdapter(carAdapter);

            // Toast.makeText(parent.getContext(), response, Toast.LENGTH_LONG).show();


        }
        catch (Exception e){
            Toast.makeText(parent.getContext(),"error " + e.toString(), Toast.LENGTH_LONG).show();
        }


        Log.d("brand", selectedBrand);

    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }
}

C таким кодом в toast попадает ошибка "System services not available to Activities before onCreate()” . При этом, листенер присвоен в методе onCreate, так что я не знаю куда копать.
Соответственно в этом классе я как то не так использую arrayAdapter и не так назначаю его спиннеру. Кто нибудь знает, как это реализовать правильно?
  • Вопрос задан
  • 471 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы