Могут ли записи моего счетчика зависеть от позиции другого счетчика? - PullRequest
1 голос
/ 25 июля 2011

У меня еще не было формального обучения программированию (хотя я недавно учился в колледже и собираюсь в нем учиться), и я пытаюсь изучать Android только после изучения Visual Basic, поэтому мне нужно многопомощиВот код, который у меня есть:

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

    Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(this, R.array.Books, android.R.layout.simple_spinner_item);
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(adapter1);
    spinner1.setOnItemSelectedListener(
            new OnItemSelectedListener() {
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    // Here's what I need help with. I basically want it to say:
                     switch(position) {

                     case 0:
                         // Here I want it to set spinner2's entries to R.array.Five
                     case 1:
                         //Here I want to set spinner2's entries to R.array.Three
                    //etc...
                }
                public void onNothingSelected(AdapterView<?> parent) {

                }
            });

    Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);
    ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this, R.array.Five, android.R.layout.simple_spinner_item);
    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(adapter2);
    spinner2.setOnItemSelectedListener(
            new OnItemSelectedListener() {
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    //(something similar)
                }
                public void onNothingSelected(AdapterView<?> parent) {

                }
            });
}

Возможно ли изменить массив записей одного счетчика из метода onItemSelected другого счетчика?Какой код мне нужно добавить куда?Попытка что-то сказать о spinner2 или adapter2 в OnItemSelectedListener spinner1 говорит, что это неуместная конструкция.Это имеет смысл, но я не знаю, как обойти это.

1 Ответ

1 голос
/ 25 июля 2011

Просто определите альтернативные ArrayAdapter (s) в верхней части метода OnCreate с определенными альтернативными наборами. Далее переместите определение spinner2 выше определения OnItemSelectedListener, чтобы оно могло быть доступно внутри внутреннего класса. Переменная счетчика, а также адаптеры массива должны быть завершены, чтобы быть доступными внутри внутреннего класса.

Измените адаптер, просто вызвав spinner2.setAdapter(....) внутри оператора swith-case.

Это будет работать до тех пор, пока вы хотите обрабатывать только статические наборы элементов в вашем счетчике.

...