Spinner
から選択したアイテムの文字列を取得しようとしています。これまでのところ、私はこれを得ています:
bundle.putString(ListDbAdapter.DB_PRI, v.getText().toString());
これは機能せず、クラスキャストの例外が発生します(それを継承するウィジェットにView
をキャストできると思いました。明らかにそうではありません!)では、選択したSpinner
の値を取得する方法
スピナーの選択された値を取得するには、この 例 に従うことができます。
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());
Spinnerの派生元であるAdapterViewクラスのgetSelectedXXXメソッドがあります。
単にこれを使用してください:
spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString();
これにより、String
で選択したアイテムのSpinner
が得られます。
mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition())
は、Richの説明に基づいて機能します。
値を「キャッチ」したいポイントに依存します。
たとえば、ユーザーがスピナーで選択したアイテムを変更するとすぐに値を取得する場合は、リスナーアプローチ(jalopabaが提供)を使用します。
ユーザーが[送信]ボタンなどの最終タスクを実行するときに値をキャッチする場合は、Richが提供する回答の方が優れています。
これは別の方法です:
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
}
});
スピナー内の文字列値のみを取得するには、次を使用します。
spinner.getSelectedItem().toString();
Spinner spinner=(Spinner) findViewById(R.id.spinnername);
String valueinString = spinner.getSelectedItem().toString();
Case Spinnerの値はint
であり、それをint
に型キャストします
int valueinInt=(int)(spinner.getSelectedItem());