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