作者Xavier (X.avi(er))
看板AndroidDev
標題[問題] spinner觸發
時間Tue Jun 11 15:04:14 2013
板友好!
最近在練習使用 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