我是android编程的初学者。我有一个收音机组和一个微调器的3个单选按钮(Car,Bike,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;
}
});
}
答案 0 :(得分:1)
只需改变一下:
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()
而不是应用程序上下文。
还为每个具有不同名称的案例创建List和ArrayAdapter,或者只使用您在案例1中创建的案例,如下所示:
list = new ArrayList<String>();
adp = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_dropdown_item_1line, list);
我测试了它并且有效