1

我有一个从数据库填充的微调器。因此,如果在其中没有任何项目的情况下单击微调器,则会显示一个带有空列表项的微调器。我想避免在微调器为空时显示该微调器并显示一条 toast 消息。我有检查项目计数并显示 toast 消息的逻辑,但我找不到调用函数的位置。单击微调器并加载微调器项目时调用的事件是什么?

4

3 回答 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.

更正:

既然你不能setOnClickListenerfor 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 回答