Spinner 由陣列資源建立,需根據資料模型 DEFAULT_CURRENCY_TYPE 設定預設選中項目,而非預設第一項。
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.currency_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
// 關鍵:取得目標字串在 adapter 中的位置,再設定選中
String defaultValue = "USD"; // 或從模型取得
int position = adapter.getPosition(defaultValue);
if (position >= 0) {
spinner.setSelection(position);
}
adapter.getPosition() 回傳 -1 若找不到,需檢查避免 crash。getPosition(Object item) 比對邏輯。onItemSelected 會被觸發(視 API 版本),若不想觸發邏輯可加旗標判斷。val adapter = ArrayAdapter.createFromResource(this, R.array.currency_array, android.R.layout.simple_spinner_item).also {
it.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
}
spinner.adapter = adapter
spinner.setSelection(adapter.getPosition(defaultValue).takeIf { it >= 0 } ?: 0)