Spinner OnItemSelectedListener()不使用列表中的一个项目。

时间:2015-04-21 23:20:04

标签: android spinner android-spinner onitemselectedlistener

因此,当列表中只有一个项目时,我遇到一个旋转器没有触发侦听器的问题。

这是我想要做的细分:有一个带有字符串的微调器,它显示一个对象的id / title,有一个按钮可以向这个微调器添加项目,创建一个对话框并返回和对象从对话框中更新微调器。我现在让微调器在对话框关闭后将项添加到微调器。当微调器中有多个项时,代码按预期工作,但是如果微调器中只有一个项,则不会触发onitemselectedlistener。我知道这是因为我已经调试了代码并走过了监听器,当试图选择一个项目时,列表中只有一个项目什么都不做。但是,如果我将另一个项目添加到此列表中,我可以选择,但只有在首先选择列表中的第二个或第三个项目之后

如果这是旋转器当前正在选择的项目,那么几乎就好像这个项目一样,因此不会产生任何按下它的事件。我想我的问题是如何清除微调器选择,以便没有当前选择。或者我是否必须做一些事情,比如总是在微调器中输入一个条目"选择一个"并且只有在微调器的当前选择不等于"选择一个"。

时才会进行检查。

我现在的听众

  methodSpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if(first == false) {

                body.setText("");
                currentMethod = hold.get(position);
                Toast.makeText(methodActivity.this, "Text!" + position + ":" + currentMethod.body, Toast.LENGTH_SHORT).show();// for feedback/testing purposes
                body.setEnabled(true);
                body.setText(currentMethod.body);
            }
            else
                Toast.makeText(methodActivity.this, "check == false", Toast.LENGTH_SHORT).show(); // for feedback/testing purposes
        }
        public void onNothingSelected(AdapterView<?> parent) {
            Toast.makeText(methodActivity.this, "onNothingSelected", Toast.LENGTH_SHORT).show();// for feedback/testing purposes
        }
    });

1 个答案:

答案 0 :(得分:3)

即使您调用Spinner.setSelection(-1),Spinner也将始终具有所选项。我想你可以做些什么来添加提示 作为第一选择。

ArrayList<String> aOptions = new ArrayList<String>();
aOptions.add("Choose One");
aOptions.add("Option 1");

ArrayAdapter<String> adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item, aOptions);  
Spinner spinner = (Spinner)findViewById(R.id.spinner);
spinner.setAdapter(adapter);