作者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)
1F:→ Xavier:把 06/11 16:36
2F:→ Xavier:tmpSpinner.setSelection(SelectBase, true); 06/11 16:36
3F:→ Xavier: ^^^^^^ 多一个 true 06/11 16:37
4F:→ Xavier:写在 06/11 16:37
5F:→ Xavier:tmpSpinner.setAdapter(BaseAdapter); 後面 06/11 16:37
6F:→ Xavier:再写 06/11 16:38
7F:→ Xavier:tmpSpinner.setOnItemSelectedListener(new ???()); 06/11 16:39
8F:→ Xavier:就可以避免 spinner建立时的自动触发事件~ 06/11 16:39