【问题标题】:Android Spinner OnItemSelectedListener not working accuratelyAndroid Spinner OnItemSelectedListener 无法正常工作
【发布时间】:2011-07-22 10:26:35
【问题描述】:

我创建了一个 Spinner 并激活了监听器:

customerListSpinner.setOnItemSelectedListener(new OnItemSelectedListener(){
    public void onItemSelected(AdapterView<?> adapter, View view, int position, long id) {
        // I do some work here
    }
    public void onNothingSelected(AdapterView<?> arg0) {
        isInitRadioGroup = false;
    }
 );

我最初在 Spinner 中添加了三个值:“Search”、“Employee”、“Company”。 如果用户选择“搜索”,则会显示一个新的 ListActivity,并将所选值添加到上面的 Spinner 作为结果。
像这样,我正在对微调器项目的选择执行一些操作。现在,第一次显示屏幕时,默认显示“搜索”。要触发 ListActivity 的处理,用户必须再次选择“搜索”。这一次,没有调用 ItemSelected 回调。我的意思是说,如果 Spinner 中的某个值已经被选中,那么在再次选择相同的值时,不会触发监听器。

鉴于: 首次显示屏幕时,默认显示“搜索”。用户选择值“Employee”(已完成处理,调用 onItemSelected,因为先前选择的值与用户选择的值不同)。然后用户选择值“搜索”。这次调用了 onItemSelected 方法,并成功为 Spinner 添加了一个新值。

这是 Android 的错误。我检查了我的代码中没有错误。

【问题讨论】:

    标签: android spinner


    【解决方案1】:

    尝试如下使用微调器

    Spinner genspin=(Spinner)findViewById(R.id.gender);
    
    ArrayAdapter<String> genadap=new ArrayAdapter(this,R.layout.spinneritems,String_array);
    genadap.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    genspin.setAdapter(genadap);
    genspin.setOnItemSelectedListener(this);
    

    那么你可以得到选择的值作为

    genspin.getSelectedItem().toString()
    

    【讨论】:

    • Surendra,获取微调器的 Selected 值没有问题。我想要的是当客户端更改微调器的值(或重新选择相同的值)时,需要执行一些操作。为此,当用户选择的值与所选值不同时,会调用 onItemSelected,但当用户重新选择相同的值(如“搜索”)时,不会调用 onItemSelected。我无法手动强制回调触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2017-03-10
    • 2012-09-13
    相关资源
    最近更新 更多