4

Im new to android. i have tried to built an application which has 2 spinner... i have few doubts to clear before going deep to my application..

please give brief answer to my question...

  1. is it possible to have 2 spinners in one view?
  2. can i add setOnItemSelectedListener(this) for both?
  3. if yes, how could i know which option is selected on both the spinners? like spinner.getSelectedItemPosition(); on both the spinners?

waiting for ur valuable replies. reference materials are also appreciable

1
  • I also got a question: What's the harm in just trying it? Either in a small sample project or in a project under source control that you can revert later in case you are not satisfied with the result. Commented Nov 16, 2011 at 11:26

4 Answers 4

14

Yes, you can have multiple spinner's that can be managed by single listener or you can have seperate Listener for each.

For Single Listener you can do something like this,

Set the Listener

spinner1.setOnItemSelectedListener(this); spinner2.setOnItemSelectedListener(this); 

Then you can use onItemSelected to get perform the action related to the spinner's.

 @Override public void onItemSelected(AdapterView<?> parent, View view, int position,long arg3) { int id = parent.getId(); switch (id) { case R.id.spinner1: // your stuff here break; case R.id.spinner2: // your stuff here break; } 
Sign up to request clarification or add additional context in comments.

Comments

1

Check this:

Spinner spinner0, spinner1, spinner2; TextView textView0, textView1, textView2;

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView0 = (TextView) findViewById(R.id.text0); spinner0 = (Spinner) findViewById(R.id.spinner0); ArrayAdapter<String> adapter0 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, text0); adapter0.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner0.setAdapter(adapter0); spinner0.setOnItemSelectedListener(onItemSelectedListener0); textView1 = (TextView) findViewById(R.id.text1); spinner1 = (Spinner) findViewById(R.id.spinner1); ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, text1); adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner1.setAdapter(adapter1); spinner1.setSelection(0,false); //make sure only one listener is 

//active in the onCreate method by setting the other listener as false spinner1.setOnItemSelectedListener(onItemSelectedListener1);

 textView2 = (TextView) findViewById(R.id.text2); spinner2 = (Spinner) findViewById(R.id.spinner2); MySpinnerAdapter adapter2 = new MySpinnerAdapter(MainActivity.this, android.R.layout.simple_spinner_item, obj2); //adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner2.setAdapter(adapter2); spinner2.setSelection(0,false); spinner2.setOnItemSelectedListener(onItemSelectedListener2); } OnItemSelectedListener onItemSelectedListener0 = new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //do your stuff spinner0 } @Override public void onNothingSelected(AdapterView<?> parent) { } }; OnItemSelectedListener onItemSelectedListener1 = new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //do your stuff spinner1 } @Override public void onNothingSelected(AdapterView<?> parent) { } }; OnItemSelectedListener onItemSelectedListener2 = new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //do your stuff spinner2 } @Override public void onNothingSelected(AdapterView<?> parent) { } }; 

}

1 Comment

Welcome to SO. As much effort obviously has gone into this answer, it might be difficult to get a grasp at if it's just code. It's usual to comment the solution with a few sentences. Please edit your answer and add some explanation.
0

If the reference of two spinners are different(which will be , if you are using 2 spinners) , give different IDs for them and you can uniquely identify them, Yes you can set click listener to both of them individually.

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { ... } ); spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { ... } ); 

Comments

0
  1. yes
  2. yes
  3. spinner1.getSelectedItemPosition(), spinner2.getSelectedItemPosition()

1 Comment

i did so. and i can now print the value in the second spinner in an alert. but when i try to do it for first, it shows error. "The application MultiSpinner (process com.myApps) has stopped unexpectedly. Please try again [Force close]"

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.