如何在微调器之间传递选定的微调器项目?

How to pass a selected spinner item between spinners?

经过彻底的搜索和思考,我在AndroidStudio中找不到解决以下问题的方法:

我有 2 个微调器(输入和输出)。我想将输入微调器的值传递给在选择输出微调器 (onItemSelected) 的值时调用的方法。有关代码段如下所示:

private void setupSpinnerListeners() {

    spinnerLengthInput.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String itemSelectedInSpinnerLengthInput = parent.getItemAtPosition(position).toString();
            checkIfConvertingFromMeter(itemSelectedInSpinnerLengthInput);
        }

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

        }
    });

    spinnerLengthOutput.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String itemSelectedInSpinnerLengthOutput = parent.getItemAtPosition(position).toString();
            updateOutputTextfield(itemSelectedInSpinnerLengthInput, itemSelectedInSpinnerLengthOutput);
        }

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

        }
    });
}

我希望 String itemSelectedInSpinnerLengthInput(从输入微调器获取其值)在输出微调器的 onItemSelected 方法中可用。如何做到这一点? 非常感谢任何帮助。

编辑:在 setupSpinnerListeners 方法中创建一个全局变量,这是一个长度为 1 的数组。它将按我的预期工作。

我推荐你使用OnItemSelectedListener

然后创建一个 globalVariable 以将 String 设置为您的第一个 Spinner,如下所示:

String FirstValue = "";

然后你需要这样调用:

spinnerLengthInput.setOnItemSelectedListener(this);
spinnerLengthOutput.setOnItemSelectedListener(this);

当然你需要implements OnItemSelectedListener

然后在里面你可以做同样的事情。

 @Override
public void onItemSelected(AdapterView<?> spinner, View view, int position,long id)
{
     FirstValue = spinner.getItemAtPosition(position).toString();
        checkIfConvertingFromMeter(itemSelectedInSpinnerLengthInput);
}

然后在您的另一个 Spinner 中使用 FirstValue 值。

您应该将 itemSelectedInSpinnerLengthOutput 更改为全局变量。之后,您可以在输出微调器的 onItemSelected 方法中轻松访问它

String itemSelectedInSpinnerLengthInput; // global variable
    private void setupSpinnerListeners() {

        spinnerLengthInput.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                itemSelectedInSpinnerLengthInput = parent.getItemAtPosition(position).toString();
                checkIfConvertingFromMeter(itemSelectedInSpinnerLengthInput);
            }

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

            }
        });

        spinnerLengthOutput.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String itemSelectedInSpinnerLengthOutput = parent.getItemAtPosition(position).toString();
                if(itemSelectedInSpinnerLengthInput != null){
                        updateOutputTextfield(itemSelectedInSpinnerLengthInput, itemSelectedInSpinnerLengthOutput);
                }else{
                     Toast.makeText(getApplicationContext(), "please select input", Toast.LENGTH_LONG).show();
                     ...
                }
            }

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

            }
        });
    }

希望对您有所帮助