android Spinner:调用onItemSected之前选择的项目

时间:2013-01-07 12:13:50

标签: android android-spinner

我有一个在视图中动态创建的微调器列表。当单击微调器时,它会返回当前所选项目。有什么方法可以让我在这个选择之前得到那个项目吗?

除了onItemSelected()之外是否还有其他事件?

3 个答案:

答案 0 :(得分:0)

错误回答,质疑误解

调用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];     
      }

答案 1 :(得分:0)

请看这段代码:

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);

}

答案 2 :(得分:0)

可能不是,你必须保持自己的价值。 AdapterView确实有mOldSelectedPosition字段,但无法访问。