Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Spinner : Avoid onItemSelected calls during initialization

I created an Android application with a Spinner and a TextView. I want to display the selected item from the Spinner's drop down list in the TextView. I implemented the Spinner in the onCreate method so when I'm running the program, it shows a value in the TextView (before selecting an item from the drop down list).

I want to show the value in the TextView only after selecting an item from the drop down list. How do I do this?

Here is my code:

import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView;  public class GPACal01Activity extends Activity implements OnItemSelectedListener {     /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);          Spinner spinner = (Spinner) findViewById(R.id.noOfSubjects);          // Create an ArrayAdapter using the string array and a default spinner layout         ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.noofsubjects_array, android.R.layout.simple_spinner_item);         // Specify the layout to use when the list of choices appears         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);         // Apply the adapter to the spinner         spinner.setAdapter(adapter);         spinner.setOnItemSelectedListener(this);     }      public void onItemSelected(AdapterView<?> parent, View arg1, int pos,long id) {         TextView textView = (TextView) findViewById(R.id.textView1);         String str = (String) parent.getItemAtPosition(pos);         textView.setText(str);     }      public void onNothingSelected(AdapterView<?> arg0) {         // TODO Auto-generated method stub      } } 
like image 710
Grant Avatar asked Nov 15 '12 12:11

Grant


1 Answers

spinner.setOnItemSelectedListener(this); // Will call onItemSelected() Listener. 

So first time handle this with any Integer value

Example: Initially Take int check = 0;

public void onItemSelected(AdapterView<?> parent, View arg1, int pos,long id) {    if(++check > 1) {       TextView textView = (TextView) findViewById(R.id.textView1);       String str = (String) parent.getItemAtPosition(pos);       textView.setText(str);    } } 

You can do it with boolean value and also by checking current and previous positions. See here

like image 117
Abhi Avatar answered Oct 18 '22 20:10

Abhi