Вызов значения из OnItemSelectedListener - PullRequest
0 голосов
/ 07 марта 2019

У меня есть значение из выбранного элемента в счетчике, переданное в строковую переменную 'selectedSpinner' с использованием spinner.setOnItemSelectedListener(). Я пытаюсь получить доступ к selectedSpinner вне метода.

Я пытался присвоить selectedSpinner другой строке selectedCategory , но вне метода spinner.setOnItemSelectedListener(), selectedSpinner не может быть решена. Что нужно сделать, чтобы получить доступ к selectedSpinner вне метода? Спасибо

private void recordDialog() {

    ...
    //get category
    final Spinner spinner = subView.findViewById(R.id.spinner);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.category, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String selectedSpinner = parent.getItemAtPosition(position).toString();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
    final String selectedCategory = selectedSpinner;
    ...
    final AlertDialog alertDialog = builder.create();
    alertDialog.show();
}

1 Ответ

0 голосов
/ 07 марта 2019

Вам необходимо объявить selectedSpinner вне функции recordDialog (или установить ее как глобальную)

String selectedSpinner;
          ...
private void recordDialog() {
          ...... 
     @Override
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
         selectedSpinner = parent.getItemAtPosition(position).toString();
      }
}

После этого вы можете назначить selectedSpinner на selectedCategory.

...