我有一个从数据库填充的微调器。因此,如果在其中没有任何项目的情况下单击微调器,则会显示一个带有空列表项的微调器。我想避免在微调器为空时显示该微调器并显示一条 toast 消息。我有检查项目计数并显示 toast 消息的逻辑,但我找不到调用函数的位置。单击微调器并加载微调器项目时调用的事件是什么?
问问题
5290 次
3 回答
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;
}
});
于 2012-12-05T14:28:55.973 回答
1
Spinner
是 的子类View
,因此,View.setOnClickListener()
可用于更改onClick()
单击时将调用的实现。您可以覆盖onClick()
以检查 是否Spinner
为空,然后显示Toast
.
更正:
既然你不能setOnClickListener
for Spinner
,你可以使用这个问题中建议的解决方案(我在下面粘贴的内容)。
我们没有设置微调器的 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;
}
}
};
于 2012-12-05T14:32:38.990 回答
0
如果这是您所要求的,这是选择项目时的功能。如需更多帮助,您需要发布代码。否则,我们不知道你在做什么
spinner.setOnItemSelectedListener(new OnItemSelectedListener()
于 2012-12-05T14:29:05.837 回答