0

スピナーのプリセット値は、文字列配列から取得されます。

<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 (私のスピナー) では正しく表示されません。私は何が欠けていますか??

4

1 に答える 1

2

この更新されたコードを使用して解決できました。これは、このソリューションを探している他の人のためのものです

                // 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);

            spinnerPosition = 0;
            String myString = getIntent().getStringExtra("Currency");
            spinnerPosition = adapter.getPosition(myString);
            currencySpin.setSelection(spinnerPosition);
于 2013-01-17T08:03:29.777 に答える