ninge
ninge

Reputation: 1598

Set Visibility of a Spinner

All- I have two spinners side by side. I want it to be so that if an item in spinner1 is selected, spinner2 is invisible and visa versa. In other words the user should only be able to select one spinner. Here is my code concerning the spinners:

 //Spinner 1
    List<String> spin1= new ArrayList() ;
    spin1.add("Select");
    spin1.add("1");
    spin1.add("2");
    spin1.add("3" );
    spin1.add("4");


    Spinner spinner1 = (Spinner) findViewById(R.id.houses);
    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
                R.layout.spinnerlayout, spin1);


    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(adapter1);

    //Spinner 2
    List<String> spin2 = new ArrayList() ;
    spin2.add("Select");
    spin2.add("1");



    Spinner spinner2 = (Spinner) findViewById(R.id.hotels);
    ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,
                R.layout.spinnerlayout, spin2);


    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(adapter2);

Sample code welcome. Thank you for your time.

Upvotes: 0

Views: 5273

Answers (1)

Sam
Sam

Reputation: 86948

The idea is simple enough:

    spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if(position != 0)
                spinner2.setVisibility(View.GONE);
            else
                spinner2.setVisibility(View.VISIBLE);
        }

        public void onNothingSelected(AdapterView<?> parent) {}
    });

And vica versa for spinner2. You'll need to change the definitions of spinner1 and spinner2 so that they are visible to the whole class:

public class ... {
    Spinner spinner1;
    Spinner spinner2;

    @Override
    public void onCreate() {
        spinner1 = ...

Upvotes: 1

Related Questions