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

标签 android

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

相关文章:

java - 在后台启动 Activity

javascript - 在 cordova webview 中打开外部 URL(不在 AppBrowser 中)

android - 为什么我的服务总是绑定(bind)到 ipv6 localhost 而不是 ipv4?

android - 如何拒绝/关闭特定来电号码

Android - 为什么我的应用程序的最新版本已部署但无法在 Play 商店中显示

java - 访问二维数组的对象

android - 为什么这个图像在 Oreo 及以上会缩小?

java - 如何修改火车时刻表解析代码以考虑跳过特定车站的火车?

android - Bootstrap 中的 col.xs 被设置在 800 分辨率的 table 上

java - 无法在主线程上访问数据库,因为它可能会长时间锁定 UI 错误