为什么在spinner监听器中需要onNothingSelected方法?

时间:2013-05-08 11:28:12

标签: android listener

以英语为母语的人,所以我要对你们的英语能力表示抱歉。

我从5周前开始研究Android。我试图实现一个微调器,我的导师问为什么需要onNothingSelected方法。我无话可说。

那么,为什么我需要这种方法?你能回复吗?

以下代码是我的微调器。它正确地做了我想要的。

public class SpinnerViewPractice extends Activity {
private Spinner spinner;
private String spinner_value = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.spinnerviewpractice);

    spinner = (Spinner)findViewById(R.id.spinner1);

    String[] str = {"","good", "dislike", "like", "hate", "moderate"};
    spinner.setPrompt("Set Text");
    ArrayAdapter<String> list = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, str); 
    spinner.setAdapter(list);
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            TextView tv = (TextView)arg1;
            spinner_value = tv.getText().toString();
            if(spinner_value.length() == 0)
            {
                spinner_value = "Nothing";                  
            }
            Toast.makeText(SpinnerViewPractice.this, spinner_value, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            Toast.makeText(SpinnerViewPractice.this, "NothingSelected", Toast.LENGTH_SHORT).show();
        }           
    });
}

}

2 个答案:

答案 0 :(得分:12)

正如文档所述:

  

当选择从此视图中消失时要调用的回调方法。例如,当激活触摸或适配器变空时,选择可能会消失。

这意味着只要从可用项列表中删除当前选定的项,就会调用该方法。正如文档所描述的那样,这可能在不同情况下发生,但通常如果修改适配器使得当前所选项目不再可用,则将调用该方法。

可以使用此方法,以便您可以设置在前一项不再可用的情况下选择的项目。这不是让微调器自动选择列表中的下一个项目。

答案 1 :(得分:6)

来自文档here

  

onNothingSelected是当选择从此处消失时要调用的Callback方法   视图。例如,当激活触摸时,选择可以消失   或当适配器变空时。

我认为它几乎可以回答你的问题。因此,如果您的微调器因其他原因而消失,除非选择该项目,那么将调用onNothingSelected。因此,它的名称告诉它需要找出什么时候没有选择