How to Implements multiple spinner with different

2019-06-01 04:23发布

问题:

I want to implement two different spinner in Android, the spinner have different data set

This is the spinner with the age, that uses a defined String array with all age ranges (es 18-20, 19-21 etc.)

 <Spinner
        android:id="@+id/spAge"
        android:layout_width="match_parent"
        android:layout_height="35dp"
        android:entries="@array/age_array" 
        tools:listitem="@android:layout/simple_spinner_item/>

And this is the spinner with the sex, that show only the two items Male and Female

 <Spinner
       android:id="@+id/spSex"
       android:layout_width="match_parent"
       android:layout_height="35dp"
       android:entries="@array/sex_array"
       tools:listitem="@android:layout/simple_spinner_item />

For each selected item the my activity should set the associated selected items values to the two Objects:

String selectedAge;
String selectedItem;

The sample that I have seen doesn't contains multiple spinner with different items set and different actions on item selected, and I don't know how to solve the problem.

回答1:

Try this

 ArrayAdapter<CharSequence> adapterAge; 
 ArrayAdapter<CharSequence> adapterSex;

 String[] AgeArr = {"18-20", "19-21"};
 String[] sexArr = {"male", "female"};

 Spinner ageDrp =(Spinner)findViewById(R.id.spAge);
 Spinner sex1Drp    =(Spinner)findViewById(R.id.spSex);

adapterAge =    new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item,AgeArr);
adapterAge.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ageDrp.setAdapter(adapterAge);

adapterSex=     new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item,sexArr);
adapterSex.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sexDrp.setAdapter(adapterSex);

String selectedAge  = ageDrp.getSelectedItem().toString();
String selectedSex  = sexDrp.getSelectedItem().toString();
System.out.println(selectedAge+" "+selectedSex);// check the output in logcat


回答2:

write your Code as below to do different actions on item selected.

    spinner1.setOnItemSelectedListener(this);
    spinner2.setOnItemSelectedListener(this);
  public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {
    // TODO Auto-generated method stub
    switch(arg0.getId()){
             case R.id.spAge :
                   //Your Action Here.
                   break;
             case R.id.spSex :
                   //Your Another Action Here.
             break;
            }
}


回答3:

Try This method

spinner1 = (Spinner) findViewById(R.id.spinner);
spinner2 = (Spinner) findViewById(R.id.highschoolspinner);

List<String> categories = new ArrayList<String>();
    categories.add("Qualification");
    categories.add("High School");
    categories.add("Higher Secondary/PUC");
    categories.add("Diploma");
    categories.add("Degree");
    categories.add("Master Degree");


 List<String> list = new ArrayList<String>();
        list.add("Plus One");
        list.add("Plus Two");


ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
R.layout.spinnertext, categories);
    adapter.setDropDownViewResource(android.R.layout.select_dialog_item);
    spinner.setAdapter(adapter);


ArrayAdapter<String> dataAdapter12 = new ArrayAdapter<String>(this, 
R.layout.spinnertext, list);



dataAdapter12.setDropDownViewResource(android.R.layout.
simple_spinner_dropdown_item);

dataAdapter12.notifyDataSetChanged();
highschool.setAdapter(dataAdapter12)

Am used custom adapter to load data you can use built in adapter like

 ArrayAdapter dataAdapter11 = new ArrayAdapter(this, 
 android.R.layout.simple_list_item_1, list);