我希望微调器在用户选择项目后将值返回给我。
我知道我可以使用一个按钮,然后在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
)。