[問題] spinner觸發(已解決)

看板AndroidDev作者 (X.avi(er))時間12年前 (2013/06/11 15:04), 編輯推噓0(008)
留言8則, 1人參與, 最新討論串1/1
板友好! 最近在練習使用 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)

06/11 16:36, , 1F
06/11 16:36, 1F

06/11 16:36, , 2F
tmpSpinner.setSelection(SelectBase, true);
06/11 16:36, 2F

06/11 16:37, , 3F
^^^^^^ 多一個 true
06/11 16:37, 3F

06/11 16:37, , 4F
寫在
06/11 16:37, 4F

06/11 16:37, , 5F
tmpSpinner.setAdapter(BaseAdapter); 後面
06/11 16:37, 5F

06/11 16:38, , 6F
再寫
06/11 16:38, 6F

06/11 16:39, , 7F
tmpSpinner.setOnItemSelectedListener(new ???());
06/11 16:39, 7F

06/11 16:39, , 8F
就可以避免 spinner建立時的自動觸發事件~
06/11 16:39, 8F
文章代碼(AID): #1Hjilnv5 (AndroidDev)