Grant Grant - 6 months ago 130
Android Question

Android Spinner : Avoid onItemSelected calls during initialization

I created Android application with a

Spinner
and a
TextView
. My task is to display selected item from the Spinner's drop down list in the TextView. I implemented 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

}
}

Answer
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) {
    check=check+1
   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

Comments