スピナーのプリセット値は、文字列配列から取得されます。
<string-array name="currencyArray">
<item>INR</item>
<item>USD</item>
<item>EUR</item>
</string-array>
これを表示して保存することができます。「追加」でSQLite DBにいくつかの値を追加しています。更新時に、値を取得して画面に表示したい。その一つがスピナーです。
このコードを試しました
String myString = getIntent().getStringExtra("Currency");
System.out.println(myString);
ArrayAdapter myAdap = (ArrayAdapter) currencySpin.getAdapter();
int spinnerPosition = myAdap.getPosition(myString);
//set the default according to value
currencySpin.setSelection(spinnerPosition);
sysout (2 行目) は、DB からの正しい値を実際に表示します。ただし、スピナーには DB 値ではなく初期値が表示されます。ここで何が欠けていますか?
このコードを使用して、空の画面にスピナーを入力して読み取ります
// reading the spinner
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this,
R.array.currencyArray,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
currencySpin.setAdapter(adapter);
currencySpin.setOnItemSelectedListener(this);
更新されたコード
String myString = getIntent().getStringExtra("Currency");
System.out.println(myString);
ArrayAdapter<CharSequence> adapter = ArrayAdapter
.createFromResource(this, R.array.currencyArray,
android.R.layout.simple_spinner_item);
spinnerPosition = adapter.getPosition(myString);
System.out.println(spinnerPosition);
//set the default according to value
currencySpin.setSelection(spinnerPosition);
spinnerPosition は正しい数値 (私のデータでは 0 から 2 に変化します) として表示されますが、currencySpin (私のスピナー) では正しく表示されません。私は何が欠けていますか??