1

データベースから入力されたスピナーがあります。そのため、アイテムが入っていない状態でスピナーをクリックすると、リストアイテムが空のスピナーが表示されます。スピナーが空のときに表示されないようにし、トーストメッセージを表示したいと思います。アイテムの数をチェックしてトーストメッセージを表示するロジックがありますが、関数を呼び出す場所がわかりません。スピナーをクリックしてスピナーアイテムをロードすると、イベントは何と呼ばれますか?

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()SpinnerToast

修正:

はできないsetOnClickListenerため、この質問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 に答える