如何根据单选按钮选择填充微调器?

时间:2014-08-13 11:13:10

标签: android

我是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;

    }

});
}

1 个答案:

答案 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);

我测试了它并且有效