Search code examples
androidspinnerandroid-spinner

Multiple spinners Onitemselected Result overwritten


I have two spinners in my code. The problem I face is I'm unable to differentiate the results of the two spinners.I know we can use ids but I'm unable to do it.here's my code

public class AddProduct extends AppCompatActivity implements AdapterView.OnItemSelectedListener{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_product);
    Spinner spinner = findViewById(R.id.spinner1);

    SpinnerAdapter adap = new ArrayAdapter<String>(this, R.layout.spinner, new String[]{"Men", "Women", "Kids"});
    spinner.setAdapter(adap);
    spinner.setTag(1);

    spinner.setOnItemSelectedListener(this);

    Spinner spinner2 = findViewById(R.id.spinner2);
    spinner2.setTag(2);
    SpinnerAdapter adap2 = new ArrayAdapter<String>(this, 
    R.layout.spinner, new String[]{"Casual", "Formals", "Ethinic"});
    spinner2.setAdapter(adap2);

    spinner2.setOnItemSelectedListener(this);


}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    String text = parent.getItemAtPosition(position).toString();

    Toast.makeText(parent.getContext(), text , Toast.LENGTH_SHORT).show();
}

Solution

  • Modify onItemSelected method

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
     String text = "";
     if(parent.getId() == R.id.spinner1) {
        text = "spinner1 " + parent.getItemAtPosition(position).toString();
     } else if(parent.getId() == R.id.spinner2) {
        text = "spinner2 " + parent.getItemAtPosition(position).toString();
     } 
        Toast.makeText(parent.getContext(), text , Toast.LENGTH_SHORT).show();
    }