0

I wish to set spinner items using program code and not using android:entries in xml layout. But i am failing to do so. I want to set spinner items according to a condition so cannot set it using xml statically so kindly help me to set dynamically. here's the code: public class Converter extends AppCompatActivity {

EditText et2;
TextView tv;
Spinner spr2,spr3;
ArrayAdapter adap2,adap3;
String []spr_2;
String []spr_3;
Button btn2;
String s1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_converter);

    et2=(EditText) findViewById(R.id.et2);
    tv=(TextView) findViewById(R.id.tv);
    spr2=(Spinner) findViewById(R.id.spr2);
    spr3=(Spinner) findViewById(R.id.spr3);
    btn2=(Button) findViewById(R.id.btn2);

    Bundle b=getIntent().getExtras();
    et2.setText(b.getString("Value1"));
    s1=b.getString("SpinnerValue");
    adap2=adap3=new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line);

    if(s1 == "height") {
        spr_2 = spr_3 = getResources().getStringArray(R.array.height);
        adap2 = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, spr_2);
        adap3 = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, spr_3);
        spr2.setAdapter(adap2);
        spr3.setAdapter(adap3);
    }
    if(s1 == "weight") {
        spr_2 = spr_3 = getResources().getStringArray(R.array.weight);
        adap2 = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, spr_2);
        adap3 = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, spr_3);
        spr2.setAdapter(adap2);
        spr3.setAdapter(adap3);
    }
    if(s1 == "distance") {
        spr_2 = spr_3 = getResources().getStringArray(R.array.distance);
        adap2 = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, spr_2);
        adap3 = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, spr_3);
        spr2.setAdapter(adap2);
        spr3.setAdapter(adap3);
    }
    if(s1 == "currency") {
        spr_2 = spr_3 = getResources().getStringArray(R.array.height);
        adap2 = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, spr_2);
        adap3 = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, spr_3);
        spr2.setAdapter(adap2);
        spr3.setAdapter(adap3);
    }






}

}

ssp_21
  • 3
  • 1
  • Possible duplicate of [Android : Fill Spinner From Java Code Programmatically](https://stackoverflow.com/questions/11920754/android-fill-spinner-from-java-code-programmatically) – A.Edwar Jun 11 '17 at 20:31
  • but i have done set adapter but changes are not being made. I do tried the answers given for above mentioned question. – ssp_21 Jun 11 '17 at 20:58

1 Answers1

0

Looks like code in if-blocks does not invoked. You shouldn't check objects equality like this. Operator '==' checks identity, not equality. Not s1 == s2, but s1.equals(s2), or even better Objects.equals(s1, s2). Your code should look like this:

String[] items;
if ("height".equals(s)) 
    items = getResources().getStringArray(R.array.height);
else if ("width".equals(s)) 
    items = getResources().getStringArray(R.array.width);
....
else
    items = getResources().getStringArray(R.array.width); //just for example

spinner.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, items));
Konstantin Berkov
  • 1,193
  • 3
  • 14
  • 27