私はSpinner、カーソル、およびアダプターを扱っています。Androidスピナー "onclicklistener"質問
スピナーのクリックリスナーを設定して、スピナーからアイテムを選択すると、現在選択されているアイテムを取得してから、他のタスクを実行します(この追加コードはすべて問題ありません。私は持っている)....しかし、それは作品の種類が、setOnItemSelectedListenerコールバックを宣言した後、カーソルがすでに設定されているので、イベントは、アプリケーションが起動するとすぐに発生します。
最初の項目を選択せずにカーソルを定義する方法が必要なので、イベントが発生しないようにしてください(項目が選択されないため)。それともこれを達成するためのより良い方法がありますか?
基本的には、アプリケーションがロードされると、カーソルが設定されているため(setiNitemSelectedListener関数が起動しています)、私は思っています。さらに、イベントがあまりにも早く発砲しているという事実を無視して、スピナーで-same-アイテムを選択すると、アイテムが変更されなかったためイベントが発生しません。私はsetonitemslectedlistenerの代わりに別のコールバックを使用すべきですか?ここに私がこれまで持っていたコードがあります。
c = db.getallrecents();
startManagingCursor(c);
busnumspinner = (Spinner) findViewById(R.id.Spinner01);
SimpleCursorAdapter spinneradapter = new SimpleCursorAdapter(this,
R.layout.lvlayout, c, spincol, spinto);
busnumspinner.setAdapter(spinneradapter);
busnumspinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
String spinnerString = null;
Cursor cc = (Cursor)(busnumspinner.getSelectedItem());
if (cc != null) {
spinnerString = cc.getString(
cc.getColumnIndex("busnum"));
text = spinnerString;
}
showDialog(DATE_DIALOG_ID);
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// your code here
}
});
私は私の答えを編集したが、しかし私はそこに、それはそれは、コールバックが定義されると、発射ラウンド私の問題、イベントのつまり問題のいずれかを取得します – Javi