web-dev-qa-db-ja.com

スピナーの選択された値をどのように取得しますか?

Spinnerから選択したアイテムの文字列を取得しようとしています。これまでのところ、私はこれを得ています:

bundle.putString(ListDbAdapter.DB_PRI, v.getText().toString());

これは機能せず、クラスキャストの例外が発生します(それを継承するウィジェットにViewをキャストできると思いました。明らかにそうではありません!)では、選択したSpinnerの値を取得する方法

51
Matthew Hall

スピナーの選択された値を取得するには、この に従うことができます。

AdapterView.OnItemSelectedListenerを実装するネストされたクラスを作成します。これにより、アイテムがスピナーから選択されたときにアプリケーションに通知するコールバックメソッドが提供されます。

そのクラスの「onItemSelected」メソッド内で、選択したアイテムを取得できます。

public class YourItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        String selected = parent.getItemAtPosition(pos).toString();
    }

    public void onNothingSelected(AdapterView parent) {
        // Do nothing.
    }
}

最後に、ItemSelectedListenerをSpinnerに登録する必要があります。

spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
72
jalopaba

Spinnerの派生元であるAdapterViewクラスのgetSelectedXXXメソッドがあります。

getSelectedItem()

getSelectedItemPosition()

getSelectedItemId()

53
Rich

単にこれを使用してください:

spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString();

これにより、Stringで選択したアイテムのSpinnerが得られます。

43
Tharaka Devinda

mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition())は、Richの説明に基づいて機能します。

16
Chrispix

値を「キャッチ」したいポイントに依存します。

たとえば、ユーザーがスピナーで選択したアイテムを変更するとすぐに値を取得する場合は、リスナーアプローチ(jalopabaが提供)を使用します。

ユーザーが[送信]ボタンなどの最終タスクを実行するときに値をキャッチする場合は、Richが提供する回答の方が優れています。

5
Tivie

これは別の方法です:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int pos, long arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
1
Sasa

スピナー内の文字列値のみを取得するには、次を使用します。

spinner.getSelectedItem().toString();
1
dandev91
Spinner spinner=(Spinner) findViewById(R.id.spinnername);
String valueinString = spinner.getSelectedItem().toString();

Case Spinnerの値はintであり、それをintに型キャストします

int valueinInt=(int)(spinner.getSelectedItem());
0
Adnan Ali