当android微调器为空时显示toast消息

时间:2012-12-05 14:21:47

标签: android android-spinner

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

3 个答案:

答案 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)

SpinnerView的子类,因此,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;
        }
    }
};