为啥微调侦听器需要 onNothingSelected 方法?
Posted
技术标签:
【中文标题】为啥微调侦听器需要 onNothingSelected 方法?【英文标题】: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>
据我所知,您需要它来表示敬酒吗?因此,如果他什么都不选择,您会通知用户。自己试试吧,注释掉这几行代码,看看你的应用是如何工作的。
【参考方案1】:
如文档所述:
从此视图中的选择消失时要调用的回调方法。例如,当触摸被激活或适配器变空时,选择可能会消失。
这意味着只要当前选定的项目从可用项目列表中删除,就会调用该方法。正如文档所描述的,这可能在不同的情况下发生,但通常如果修改了适配器以使当前选定的项目不再可用,则将调用该方法。
可以使用此方法,以便您可以设置在前一个项目不再可用的情况下将选择哪个项目。这不是让微调器自动选择列表中的下一项。
【讨论】:
如果唯一的参数是“AdapterView”,你怎么知道哪个项目没有被选中?你确定那是调用这个函数的时候吗? 微调器无法告诉您哪个项目被取消选择,因为它不再存在于它的适配器中。如果您想知道之前选择了哪个项目或索引,您需要自己存储该信息。【参考方案2】:来自文档here。
onNothingSelected is a Callback method to be invoked when the selection disappears from this 看法。例如,当触摸被激活时,选择可能会消失 或者当适配器变空时。
我认为它几乎可以回答您的问题。因此,如果您的微调器因选择项目以外的其他原因而消失,则将调用 onNothingSelected
。所以正如它的名字所说,需要找出什么时候没有选择
【讨论】:
文档似乎有误,在关闭时不会调用回调,请参阅此处***.com/a/3474463/819355 它根本就没有这种行为,尽管它应该这样做。以上是关于为啥微调侦听器需要 onNothingSelected 方法?的主要内容,如果未能解决你的问题,请参考以下文章