Solutions (eg. see here) include
- counting the number of times the listener has fired
- usign a boolean to treat the first firing differently
- using a runnable to delay registering the listener.
What seemed most appropriate (and simple) for me was
- declare an integer variable as a default (or last used and saved in preferences) value
- set that value to the spinner before registering the listener
- in the onItemSelected check whether the spinner value equals the value you assigned before running any further code.
spinner1.setSelection(myDefault); //set default (or last selection) spinner1.setOnItemSelectedListener(this); ..... public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if (arg2 != myDefault) { myDefault = arg2; do further code