我有一个从数据库中填充的微调器。因此,如果单击微调器而没有任何项目,则会显示一个带有空列表项的微调器。我想避免在微调器为空时显示微调器并显示一个toast消息。我有逻辑检查项目的计数并显示toast消息,但我找不到调用函数的位置。单击微调器并加载微调器项时调用的事件是什么?
答案 0 :(得分:2)
为什么不设置onClickListener
?
Spinner s = (Spinner)findViewById(R.id.myspinner);
s.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
checkForItemCount(); //where you show your Toast if it's empty.
}
});
修改强> 我想我没有完全覆盖你的问题,所以我自己尝试了一些代码。这完全适合你。
final Spinner s = (Spinner)findViewById(R.id.spinner1); // get reference
ArrayList<String> mList = new ArrayList<String>(); //some list without items
s.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mList));
s.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP && mList.size() == 0) {
toast("Empty"); //lazy method for toasting
s.setPressed(false); //closes the spinner.
}
return true;
}
});
答案 1 :(得分:0)
这是选择项目时的功能,如果这就是您要求的内容。要获得更多帮助,您需要发布您的代码。否则,我们不知道你发生了什么
spinner.setOnItemSelectedListener(new OnItemSelectedListener()
答案 2 :(得分:0)
Spinner
是View
的子类,因此,View.setOnClickListener()
可用于更改onClick()
实施,该实施将在点击时调用。您可以覆盖onClick()
以检查Spinner
是否为空,然后显示Toast
。
<强>校正:强>
由于setOnClickListener
无法Spinner
,您可以使用此question中建议的解决方案(我在下面粘贴的内容)。
我们不是设置微调器的OnClickListener,而是设置OnTouchListener和OnKeyListener。
spinner.setOnTouchListener(Spinner_OnTouch);
spinner.setOnKeyListener(Spinner_OnKey);
和听众:
private View.OnTouchListener Spinner_OnTouch = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
doWhatYouWantHere();
}
return true;
}
};
private static View.OnKeyListener Spinner_OnKey = new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
doWhatYouWantHere();
return true;
} else {
return false;
}
}
};