user3872519
user3872519

Reputation: 41

Android spinner, nothing selected

I am having a problem when that my spinner is accessing the first case and redirecting immediately. How do I use the:

@Override
    public void onNothingSelected(AdapterView<?> view); {
        // TODO Auto-generated method stub

    }

method correctly to stay on the page before the user makes a selection. Below is my code.

// Creating adapter for spinner & choosing Drop down layout style - list view
    ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.event,android.R.layout.simple_spinner_dropdown_item);

    // attaching data adapter to spinner
    spinner.setAdapter(adapter);

    //spinner needs to know who is responsible for handling events
    spinner.setOnItemSelectedListener(this);
}

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l) {

    //casting the view to textView
    TextView myText=(TextView) view;

    // use .getText to display what text was selected by user
    Toast.makeText(this,"You Selected "+myText.getText(),Toast.LENGTH_SHORT).show();



    switch (pos) {
        case (0):
            //Case selection redirecting user to 'Training Table'
            Intent a = new Intent(Calendar.this, TrainingTable.class);
            Calendar.this.startActivity(a);
            break;
        case (1):
            //Case selection redirecting user to 'Race Table'
            Intent b = new Intent(Calendar.this, Races.class);
            Calendar.this.startActivity(b);
            break;

        case (2):
            //Case selection redirecting user to 'Workshops page'
            Intent c = new Intent(Calendar.this, Workshops.class);
            Calendar.this.startActivity(c);
            break;
    }

Upvotes: 3

Views: 9849

Answers (1)

Simas
Simas

Reputation: 44118

Force the spinner to select an item:

spinner.setSelection(0);

And then set the listener:

spinner.setOnItemSelectedListener(this);

This only needs to be done once, when the spinner is created. This way you avoid getting unwanted calls to OnItemSelectedListener which is called once by default.

Upvotes: 4

Related Questions