看板 AndroidDev 關於我們 聯絡資訊
板友好! 最近在練習使用 spinner時,遇到了問題,想來請教@@" 以下為程式碼: protected void onCreate(Bundle savedInstanceState) { ... initSpinner(1); ... } void initSpinner(int base){ InitStart = true;//全域變數 //tmpSpinner為全域變數 tmpSpinner = (Spinner)findViewById(R.id.spinnerBase); ArrayAdapter<String> BaseAdapter = new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item,str); BaseAdapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item); tmpSpinner.setAdapter(BaseAdapter); tmpSpinner.setOnItemSelectedListener( new BaseSpinnerSelectedListener() ); tmpSpinner.setVisibility(View.VISIBLE); tmpSpinner.setSelection(base); InitStart = false; } class BaseSpinnerSelectedListener implements OnItemSelectedListener{ public void onItemSelected(AdapterView<?> Adapter,View View,int Position,long ID){ if( !InitStart ){ Toast.makeText(getApplicationContext(), InitStart?"true":"false", Toast.LENGTH_SHORT).show(); initSpinner(Position); } }public void onNothingSelected(AdapterView<?> arg0){ } } ================================= 這樣的設計是因為, 我不想讓spinner在建立時,又再進入一次 initSpinner(), 所以用一個布林變數 InitStart來判斷, 但是現在出現了問題, spinner的觸發事件是在 InitStart = false; 後面才發生, 結果就變成一直在進入 initSpinner() ... 請問我應該在什麼時候讓 InitStart = false, 才能避免這個問題呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.201.154 ※ 編輯: Xavier 來自: 220.130.201.154 (06/11 15:05)
Xavier:把 06/11 16:36
Xavier:tmpSpinner.setSelection(SelectBase, true); 06/11 16:36
Xavier: ^^^^^^ 多一個 true 06/11 16:37
Xavier:寫在 06/11 16:37
Xavier:tmpSpinner.setAdapter(BaseAdapter); 後面 06/11 16:37
Xavier:再寫 06/11 16:38
Xavier:tmpSpinner.setOnItemSelectedListener(new ???()); 06/11 16:39
Xavier:就可以避免 spinner建立時的自動觸發事件~ 06/11 16:39