I'm trying to get the position (number) of the spinner when selected to use it in another Activity that will display a different map each time depending on the item selected. when I run the application it crashes. this is the first Activity code:
public class TestProjectActivity extends Activity { public Spinner spinner1; public Integer number; private Button valideButton; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MySpinner(); valide_button(); } public void MySpinner() { final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.num, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner1.setAdapter(adapter); spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { // Object item = parentView.getItemAtPosition(position); TestProjectActivity.this.number = spinner1 .getSelectedItemPosition() + 1; } public void onNothingSelected(AdapterView<?> arg0) {// do nothing } }); } public void valide_button() { valideButton = (Button) findViewById(R.id.valide_button); valideButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(TestProjectActivity.this, MetroMapActivity.class); startActivity(intent); } }); } }
parent, View view, int position, long id) { //first, we have to retrieve the item position as a string // then, we can change string value into integer String item_position = String. valueOf(position); int positonInt = Integer. valueOf(item_position); Toast.
layout. simple_spinner_dropdown_item, yourString. split(" ")); spinner. setAdapter(spinnerArrayAdapter);
Change spinner position Spinner position can be changed by modifying the position property of spinSettingsModel . By default, the spinner is positioned at the left of the ProgressButton. You can position it at the left , right , top , bottom , or center of the text content.
The way to get the selection of the spinner is:
spinner1.getSelectedItemPosition(); Documentation reference: http://developer.android.com/reference/android/widget/AdapterView.html#getSelectedItemPosition()
However, in your code, the one place you are referencing it is within your setOnItemSelectedListener(). It is not necessary to poll the spinner, because the onItemSelected method gets passed the position as the "position" variable.
So you could change that line to:
TestProjectActivity.this.number = position + 1; If that does not fix the problem, please post the error message generated when your app crashes.
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt = findViewById(R.id.button); spinner = findViewById(R.id.sp_item); setInfo(); spinnerAdapter = new SpinnerAdapter(this, arrayList); spinner.setAdapter(spinnerAdapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //first, we have to retrieve the item position as a string // then, we can change string value into integer String item_position = String.valueOf(position); int positonInt = Integer.valueOf(item_position); Toast.makeText(MainActivity.this, "value is "+ positonInt, Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); note: the position of items is counted from 0.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With