スピナーがクリックされたかどうかを取得したいのですが、ユーザーがスピナーをクリックした場合にのみ、どのアイテムが選択されているかには興味がありません。試してみると、「AdapterView で setOnClickListener を呼び出さないでください...」というコンパイラ エラーがスローされます。OnItemClickListener を使用する必要があることはわかっていますが、この場合、情報ではなくクリックのみをキャッチしたいのです。同じプロセスの複数のビューで同じリスナーを使用しています。
3 に答える
1
次のコードを使用できます。役立つ場合があります。
スピナーの を設定する代わりに、 と を設定してOnClickListener
みてください。OnTouchListener
OnKeyListener
spinner.setOnTouchListener(spinnerOnTouch);
spinner.setOnKeyListener(spinnerOnKey);
and the listeners:
private View.OnTouchListener spinnerOnTouch = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
//Your code
}
return false;
}
};
private static View.OnKeyListener spinnerOnKey = new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
//your code
return true;
} else {
return false;
}
}
};
于 2013-06-14T14:29:50.700 に答える
0
次のオプションがあります。
MySpinner
1) メソッドを拡張Spinner
してオーバーライドするクラスを作成しますonTouchEvent
。ユーザーが をクリックしたかどうかをキャッチできますSpinner
。
2) 実際に設定しOnItemClickListener
ます。基本的に、このリスナーはSpinner
、アイテムがクリックされるたびに起動され、Spinner
それ自体はすべてのアイテムに過ぎないため、クリックされるたびに起動されます。
于 2013-06-14T14:27:48.170 に答える
0
Activity は OnItemSelectedListener を拡張する必要があります。
次に、アクティビティは 2 つの関数を実装する必要があります
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
このようにスピナーにリスナーを追加することを忘れないでください
yourspinner.setOnItemSelectedListener(this);
于 2013-06-14T14:48:17.810 に答える