我希望微调器在用户选择项目后将值返回给我。

我知道我可以使用一个按钮,然后在OnClick()中使用spinner.getSelectedItemPosition(),但是我希望一旦用户在微调器选项中进行选择,就立即返回该值。因此,我曾考虑使用OnItemSelectedListener。

int valueINeed;
subGoalSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            int index = arg0.getSelectedItemPosition();
            //I now want to somehow get the value of the index for use outside of this code block
}


我显然不能使用直接的return语句,因为该方法具有void返回类型。此外,除非设置valueINeed valueINeed = index,否则无法设置final。我不确定我要这样做,如果用户改变主意并且需要重新分配值,会发生什么?

谢谢!

最佳答案

TronicZomB的答案是正确的,但是全局变量更改时不会通知您。如果需要在valueINeed中进行更改后立即对Spinner进行操作,则有两个选择:


取得使用valueINeed的代码,并将其全部放入onItemSelected函数中
创建一个单独的函数,您可以从onItemSelected函数中调用该函数。


#2的示例:

subGoalSpinner.setOnItemSelectedListener(new OnItemSelectedListener()
{
    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
    {
        valueINeed = subGoalSpinner.getSelectedItemPosition();
        updateView(valueINeed);
    }
}


在这种情况下,updateView是一个将valueINeed作为参数并对其执行某些操作的函数(例如更新TextView)。

08-06 11:36