【发布时间】:2012-12-05 14:21:47
【问题描述】:
我有一个从数据库中填充的微调器。因此,如果在其中没有任何项目的情况下单击微调器,则会显示一个带有空列表项的微调器。我想避免在微调器为空时显示该微调器并显示一条 toast 消息。我有检查项目计数并显示 toast 消息的逻辑,但我找不到调用函数的位置。单击微调器并加载微调器项目时调用的事件是什么?
【问题讨论】:
-
我添加了一些代码,对我来说它完全可以工作。
我有一个从数据库中填充的微调器。因此,如果在其中没有任何项目的情况下单击微调器,则会显示一个带有空列表项的微调器。我想避免在微调器为空时显示该微调器并显示一条 toast 消息。我有检查项目计数并显示 toast 消息的逻辑,但我找不到调用函数的位置。单击微调器并加载微调器项目时调用的事件是什么?
【问题讨论】:
为什么不设置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;
}
});
【讨论】:
s.setOnClickListener(new View.OnClickListener() {
s.performClick())。
Spinner 是View 的子类,所以View.setOnClickListener() 可以用来改变onClick() 的实现,当它被点击时会被调用。您可以覆盖onClick() 以检查Spinner 是否为空,然后显示Toast。
更正:
由于Spinner 不能使用setOnClickListener,因此可以使用question 中建议的解决方案(我已将其内容粘贴在下面)。
我们设置的是 OnTouchListener 和 OnKeyListener,而不是设置微调器的 OnClickListener。
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;
}
}
};
【讨论】:
如果这是您所要求的,这是选择项目时的功能。如需更多帮助,您需要发布代码。否则,我们不知道你在做什么
spinner.setOnItemSelectedListener(new OnItemSelectedListener()
【讨论】: