【问题标题】:Why is onNothingSelected method needed in spinner listener?为什么微调侦听器需要 onNothingSelected 方法?
【发布时间】:2013-05-02 14:41:09
【问题描述】:

母语为英语,所以我想对你们说对不起我糟糕的英语水平。

我从 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();
            }           
        });
    }
}

【问题讨论】:

  • onNothingSelected是在选择从此视图中消失时要调用的回调方法。 span>
  • 据我所知,您需要它来表示敬酒吗?因此,如果他什么都不选择,您会通知用户。自己试试吧,注释掉这几行代码,看看你的应用是如何工作的。

标签: android listener


【解决方案1】:

如文档所述:

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

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

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

【讨论】:

  • 如果唯一的参数是“AdapterView”,你怎么知道哪个项目没有被选中?你确定那是调用这个函数的时候吗?
  • 微调器无法告诉您哪个项目被取消选择,因为它不再存在于它的适配器中。如果您想知道之前选择了哪个项目或索引,您需要自己存储该信息。
【解决方案2】:

来自文档here

onNothingSelected is a Callback method to be invoked when the selection disappears from this 看法。例如,当触摸被激活时,选择可能会消失 或者当适配器变空时。

我认为它几乎可以回答您的问题。因此,如果您的微调器因选择项目以外的其他原因而消失,则将调用 onNothingSelected。所以正如它的名字所说,需要找出什么时候没有选择

【讨论】:

猜你喜欢
  • 2011-03-29
  • 2012-02-12
  • 1970-01-01
  • 2021-11-30
  • 2011-03-31
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多