如何以编程方式填充微调器选项(不使用xml)
问题描述:
我希望使用程序代码设置微调器项目,而不是在xml布局中使用android:条目。 但我没有这样做。 我想根据条件设置微调项目,所以不能使用静态的xml来设置它,所以善意地帮助我动态设置。 下面的代码: 公共类转换器扩展AppCompatActivity {如何以编程方式填充微调器选项(不使用xml)
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);
}
}
}
答
貌似代码,如果块不被调用。你不应该像这样检查对象是否平等。运算符'=='检查标识,而不是相等。不是s1 == s2,而是s1.equals(s2),甚至更好Objects.equals(s1,s2)。 您的代码应该是这样的:
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));
的可能的复制[安卓:填写微调从Java代码编程(https://*.com/questions/11920754/android-fill-spinner-from-java-代码编程) –
但我已经做了适配器,但没有做出更改。我确实尝试了上述问题的答案。 –