我有一个在视图中动态创建的微调器列表。单击微调器时,它会返回当前选定的项目。有什么方法可以让我获得此选择之前的项目吗?
除了 onItemSelected() 之外还有其他可能的事件吗?
我有一个在视图中动态创建的微调器列表。单击微调器时,它会返回当前选定的项目。有什么方法可以让我获得此选择之前的项目吗?
除了 onItemSelected() 之外还有其他可能的事件吗?
请看这段代码:
Spinner sp= (Spinner) findViewById(R.id.type_spinner);
sp.setOnItemSelectedListener(this);
这是您选择的微调器值的方法:
如果您没有任何选择值,则默认选择第一个值
public void onItemSelected(AdapterView<?> parent, View view, int position,
long arg3) {
String main = (int) parent.getSelectedItemId();
Log.e("Spinner Value",main);
}
错误答案,问题误解
当你onItemSelected()
被调用时,你会得到一个position
参数。您可以使用position - 1
来知道元素在所选元素之前的位置。如果您有相应的元素数组,并且微调器元素的位置相似,那么corresponding_spinner_array[position-1]
应该为您提供所需的元素。
问题重构后
为什么不只记住单个变量中的每个选择?
示例更新:
String[] items = {"a","b","c"};
String selectedItem;
/*get your spinner element from your XML layout*/
/*or if you already have access to it, no need for this*/
Spinner spin = (Spinner) findViewById(R.id.spinner);
spin.setOnItemSelectedListener(this);
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, items);
spin.setAdapter(aa);
public void onItemSelected(AdapterView<?> parent, View v, int position,
long id) {
selectedItem = items[position];
}
可能不是,你必须保持自己的价值。AdapterView 确实有一个mOldSelectedPosition
字段,但它不可访问。