我是 android 编程的初学者。我在一个单选组和一个微调器中有 3 个单选按钮(汽车、自行车、CV)。我想根据单选按钮选择填充微调器。如果单选按钮是“汽车”,则微调器值必须是“项目 1、项目 2、项目 3”,对于“自行车”,微调器值必须是“项目 4、项目 5、项目 6”。我试图实现这个概念,但没有实现所需的输出。
请帮忙
我的编码
private RadioGroup rg;
private Spinner sp;
int pos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get_vehicle_info);
rg = (RadioGroup) findViewById(R.id.VehicleType);
sp = (Spinner) findViewById(R.id.makeSpinnerCar);
rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
pos=rg.indexOfChild(findViewById(checkedId));
switch (pos)
{
case 0 :
List<String> list = new ArrayList<String>();
list.add("Item 1");
list.add("Item 2");
list.add("Item 3");
ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, list);
sp.setAdapter(adp);
break;
case 1 :
List<String> list = new ArrayList<String>();
list.add("Item 4");
list.add("Item 5");
list.add("Item 6");
ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, list);
sp.setAdapter(adp);
break;
case 2 :
List<String> list = new ArrayList<String>();
list.add("Item 7");
list.add("Item 8");
list.add("Item 9");
ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, list);
sp.setAdapter(adp);
break;
}
});
}
最佳答案
只是改变这个:
ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, list);
到:
ArrayAdapter<String> adp = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_dropdown_item_1line, list);
原因是这里的this
指的是OnCheckedChangeListener()
而不是application Context。
同时为每个案例创建 List 和 ArrayAdapter 并使用不同的名称,或者只使用您在案例 1 中创建的那个,就像这样:
list = new ArrayList<String>();
adp = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_dropdown_item_1line, list);
我测试过它,它可以工作
关于android - 如何根据单选按钮选择填充微调器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25284660/