Включить отключенный Spinner в Android

Я дурачился с Android, и мои знания Java в лучшем случае ограничены (например, я озадачен тем фактом, что он допускает встроенные классы !?).

Мой вопрос заключается в следующем:

У меня есть макет, где есть три выпадающих меню. Я инициализирую все три из них внутри onCreate ().

Первый берет свои значения из строкового массива. Второй, однако, зависит от выбора первого, а третий зависит от выбора второго по очереди!

У меня есть несколько строковых массивов для второго Spinner, но мне было интересно, как бы правильно реализовать список последовательно включенных Spinner. Я испытываю желание просто взломать его и заставить его работать, но я не хочу рисковать, чтобы он был уродливым и нестабильным.

Так, например, ради меня, мой случай, как будто я имелУчебник по Google Spinner с дополнительным Spinner для лун каждой планеты (и затем, возможно, для кратеров на каждой из лун).

В моих ресурсах у меня есть arrays.xml, такой как:

<resources>

<string-array name="planets">
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
    <item>Jupiter</item>
    <item>Saturn</item>
    <item>Uranus</item>
    <item>Neptune</item>
</string-array>
<string-array name="earth">
    <item>The Moon</item>
</string-array>
<string-array name="mars">
    <item>Deimos</item>
    <item>Phobos</item>
</string-array>
<string-array name="jupiter">
    <item>Metis</item>
    <item>Adrasthea</item>
    <item>Amalthea</item>
    <item>Thebe</item>
    <item>Io</item>
    <item>Europa</item>
    <item>Ganymede</item>
    <item>Callisto</item>
 [...] etc. etc. 
</resources>

В методе onCreate я инициализирую все три:

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  Spinner spinner1 = (Spinner) findViewById(R.id.planetSpinner);
  Spinner spinner2 = (Spinner) findViewById(R.id.moonSpinner);
  Spinner spinner3 = (Spinner) findViewById(R.id.craterSpinner);
  spinner2.setEnabled(false);
  spinner3.setEnabled(false);
  ArrayAdapter adapter1 = ArrayAdapter.createFromResource(
        this, R.array.planets, android.R.layout.simple_spinner_item);
  adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  spinner1.setAdapter(adapter1);
  spinner1.setOnItemSelectedListener(new MyOnPlanetSelectedListener());

}

Мой класс слушателя

public class MyOnPlanetSelectedListener implements OnItemSelectedListener {

public void onItemSelected(AdapterView<?> parent,
    View view, int pos, long id) {
  Toast.makeText(parent.getContext()), "The planet is " +
      parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
 }

public void onNothingSelected(AdapterView parent) {
  // Do nothing.
  }
}

Так и есть. Мой вопрос заключается в том, где и как реализовать слушателей для последующих Spinner, чтобы они были включены после выбора первого. Мое первое предположение:

    public class MyOnPlanetSelectedListener implements OnItemSelectedListener {

public void onItemSelected(AdapterView<?> parent,
    View view, int pos, long id) {
  Toast.makeText(parent.getContext()), "The planet is " +
      parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();

  spinner2.setEnabled(true);

 }

public void onNothingSelected(AdapterView parent) {
  // Do nothing.
  }
}

Но очевидно, что это неправильно, так как spinner2 здесь не инкапсулирован.

Затем последовательные счетчики должны выбрать массив строк для своих адаптеров в зависимости от того, какой выбор спиннеров перед ним. Я попытался инкапсулировать счетчики в классе активности, в конструкторе, но приложение вылетает перед запуском.

Заранее большое спасибо за вашу помощь.

Ответы на вопрос(1)

Ваш ответ на вопрос