スピナーの値を取得する方法は?


263

Androidでは、選択したスピナー値をリスナーで取得しようとしています。

スピナーの値を取得するための最良の方法は何ですか?

回答:


571
Spinner mySpinner = (Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();

11
「値」はここではかなりあいまいです。これにより、現在のスピナーアイテムのタイトル(ユーザーに表示されるStringなど)が取得されますが、たとえば、スピナーにint配列をマップした場合は、その値は取得されません。
A. Steenbergen、2015

1
たとえば、整数値のような選択された項目の値を取得するには@Dogeを使用します。たとえば、int [] valuesArrayを作成し、onCreate関数にそれをarray.xmlからファイルする必要があるため、valuesArray [(int)mySpinner.getSelectedItemId()]を使用して整数値を取得できます。
ベラルマズロム2015

128

何かが選択されると、Spinnerは "OnItemSelected"イベントを発生させるはずです。

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        Object item = parent.getItemAtPosition(pos);
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
});

ありがとう-うまくいきましたが、メソッドにvoidの戻り値の型を追加する必要がありました。
Sam Dutton、

6
アイテムの位置に依存せずにこれを達成する方法は本当にありませんか?
Vinz

7
選択イベントに依存せずにスピナーの値を読み取りたい場合は、あまり便利な解決策ではありません。
AndroidDev 2013年

3
@PatrickアノテーションOverrideは必要ありません。コンパイラに「このオーバーライドが正しく行われているかどうかを確認できますか?」と伝えるだけです。
SiXoS 2014

1
変更が加えられていないときにデフォルトで選択されているアイテムを取得するのはどうですか?@dodoのものが最も適切です。
Xtreme Biker 2014年

49

これが、スピナーエントリ(タイトルなど)と値を含むxmlだとします。

<resources>
    <string-array name="size_entries">
        <item>Small</item>
        <item>Medium</item>
        <item>Large</item>
    </string-array>

    <string-array name="size_values">
        <item>12</item>
        <item>16</item>
        <item>20</item>
    </string-array>
</resources>

これはあなたのスピナーです:

<Spinner
    android:id="@+id/size_spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:entries="@array/size_entries" />

次に、コードでエントリを取得します。

Spinner spinner = (Spinner) findViewById(R.id.size_spinner);
String size = spinner.getSelectedItem().toString(); // Small, Medium, Large

値を取得するには:

int spinner_pos = spinner.getSelectedItemPosition();
String[] size_values = getResources().getStringArray(R.array.size_values);
int size = Integer.valueOf(size_values[spinner_pos]); // 12, 16, 20

Thx、これはスピナーの公式ANDRドキュメントにあるはずです。リスナーを介して値を取得することだけを示しました。
2016

これはまさに私が探しているもの
jet_choong

完璧なソリューション!android:entries私の日を作りました。
coderpc

15

はい、ここにsetOnItemSelectedListener()示すように、を介してリスナーを登録できます


ありがとう-これもうまくいきました、そして(私は思うに)コードを読みやすくします。
Sam Dutton、

14
View view =(View) getActivity().findViewById(controlId);
Spinner spinner = (Spinner)view.findViewById(R.id.spinner1);
String valToSet = spinner.getSelectedItem().toString();

12

アイテムがであることがすでにわかっている場合はString、次のようにします。

String itemText = (String) mySpinner.getSelectedItem();

あなたが知っtoString()ているObjectことを呼び出すと、String単にObjecttoをキャストするよりも遠回りの道のようStringです。


2

setOnItemSelectedListenerをスピナー参照に追加して、そのようなデータを取得します `

 mSizeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
            selectedSize=adapterView.getItemAtPosition(position).toString();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.