選択したアイテムの文字列をから取得しようとしています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())
リッチの説明に基づいて動作します。
値を「キャッチ」するポイントによって異なります。
たとえば、ユーザーがスピナーで選択したアイテムを変更するとすぐに値を取得したい場合は、リスナー アプローチを使用します (jalopaba が提供)。
ユーザーが [送信] ボタンをクリックするなどの最終タスクを実行したときに値を取得する場合は、Rich が提供する回答の方が適しています。
スピナー内の文字列値だけを取得するには、次を使用します。
spinner.getSelectedItem().toString();
これは別の方法です:
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
}
});