从 OnItemSelectedListener 调用值

Posted

技术标签:

【中文标题】从 OnItemSelectedListener 调用值【英文标题】:Calling value from OnItemSelectedListener 【发布时间】:2019-07-29 00:59:16 【问题描述】:

我使用spinner.setOnItemSelectedListener() 将微调器中选定项目的值传递给字符串变量'selectedSpinner'。我正在尝试在方法之外访问 '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】:

你需要在recordDialog函数外声明selectedSpinner(或者设置为全局)

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

之后,您可以将selectedSpinner 分配给selectedCategory

【讨论】:

以上是关于从 OnItemSelectedListener 调用值的主要内容,如果未能解决你的问题,请参考以下文章

对话框中的 OnItemSelectedListener

Java onItemSelectedListener 和 Spinner 不返回任何内容

如何基于onItemSelectedListener在textview中显示纺织品?

底部导航栏的 onItemSelectedListener

onItemSelectedListener 没有被触发

是否调用了 OnItemSelectedListener.onNothingSelected?