Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get the position of a spinner in Android

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);             }          });      }  } 
like image 405
Khaled Ben Aissa Avatar asked Dec 21 '11 23:12

Khaled Ben Aissa


People also ask

How to get value from position in spinner Android?

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.

How to Set specific position in spinner in Android?

layout. simple_spinner_dropdown_item, yourString. split(" ")); spinner. setAdapter(spinnerArrayAdapter);

How do I change the position of my spinner?

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.


2 Answers

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.

like image 82
Plastic Sturgeon Avatar answered Oct 11 '22 23:10

Plastic Sturgeon


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. 
like image 31
Yumick Gharti Avatar answered Oct 11 '22 23:10

Yumick Gharti