Использование выбора Spinner как значения в Android - PullRequest
2 голосов
/ 20 ноября 2010

Я пытаюсь заставить Spinner работать в Android. Он отображается нормально, и я могу выбрать любой из вариантов в списке. Но как мне передать это в строку? В коде ниже я бы подумал, что «selected» будет содержать выбранную строку, но я получаю «Illegal модификатор для локального класса YourItemSelectedListener; допускается только аннотация или окончательная ошибка 'YourItemSelectedListener'. Что я делаю неправильно? Большое спасибо за любую помощь.

Spinner spinnerFPS = (Spinner) findViewById(R.id.sp_FPS);
        ArrayAdapter adapter = ArrayAdapter.createFromResource(
                this, R.array.framesps, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerFPS.setAdapter(adapter);
        spinnerFPS.setOnItemSelectedListener(new YourItemSelectedListener());


        public class YourItemSelectedListener implements OnItemSelectedListener {

            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
                String selected = parent.getItemAtPosition(pos).toString();
            }

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

Ответы [ 2 ]

3 голосов
/ 16 апреля 2012
ArrayAdapter adapter = ArrayAdapter.createFromResource(
        this, items, android.R.layout.simple_spinner_item);

Вам нужно будет добавить CurrentActivityName.this. Это решит проблему. Вы просто не можете передать контекст аргумента как this. Вам нужно будет поставить ActivityName.this.

1 голос
/ 20 ноября 2010

Поскольку вы используете ресурс массива для спиннера, создайте дескриптор ресурса с объявлением локального массива с getResources().getStringArray(R.array.framesps);

, а затем используйте этот дескриптор для доступа к выбранному элементу с помощью переменной положения:

items[pos]

Вот код редактирования:

Spinner spinnerFPS = (Spinner) findViewById(R.id.sp_FPS);
    String[] items=getResources().getStringArray(R.array.framesps);//handle to your arrays
ArrayAdapter adapter = ArrayAdapter.createFromResource(
            this, items, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerFPS.setAdapter(adapter);
    spinnerFPS.setOnItemSelectedListener(new YourItemSelectedListener());


    public class YourItemSelectedListener implements OnItemSelectedListener {

        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
            String selected =items[pos]; // use handler to access select item
        }

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