首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >触发其他微调器的微调器

触发其他微调器的微调器
EN

Stack Overflow用户
提问于 2015-10-04 23:44:17
回答 2查看 1.8K关注 0票数 1

我想创建一个有两个微调器的应用程序。当您选择第一个微调器中的一个项目时,第二个微调器将只获得几个项目(取决于选定的项目)。

例如:在第一个旋转器中我选择“马自达”,然后在第二个旋转器上我将只能看到马自达的车型,而不是宝马,福特等。我可以这样做吗?

我尝试创建一个不带项目的微调器,并在选中项目时在XML上设置微调器的条目,但没有这样做的方法。

我不会创建列表。我希望在strings.xml中创建string-array资源,并将该数组提供给第二个微调器。

EN

回答 2

Stack Overflow用户

发布于 2015-10-04 23:51:00

当然,这是可行的,而且非常简单。Spinners与模型提供者一起工作,在安卓中它被称为Adapter模式。因此,您可以做的是在第一个转盘中放入一个适配器,该适配器可以容纳所有品牌的汽车,并使用setOnItemSelectedListener在第一个转盘上侦听更改。

当该项更改时,可以使用在这种情况下有效的值为第二个微调器创建一个新的适配器实例。

票数 0
EN

Stack Overflow用户

发布于 2015-10-05 02:12:47

尝试下面的代码。我已经将样本数据组织在一个HashMap中,但是您可以用自己的方式来完成。

代码语言:javascript
复制
    // hashmap object containing data of spinner1 as 'keys' with relevant  
    // data of spinner2 in List<String> object as 'values'
    final Map<String, List<String>> data = new HashMap<>();
    data.put("A", Arrays.asList("1","2","3","4"));
    data.put("B", Arrays.asList("4", "5"));
    data.put("C", Arrays.asList("6", "7", "8", "9"));
    data.put("D", Arrays.asList("10", "11", "12"));
    data.put("E", Arrays.asList("13", "14"));

    // obtaining a string array containing keys(data of spinner1) of above hashmap
    final String[] dataSpinner1 = new String[data.keySet().size()];
    data.keySet().toArray(dataSpinner1);

    // initializing an string type, ArrayAdapter for spinner1 
    // you will need to pass activity context, layout for the spinner item and 
    // spinner content(as string array) as arguments to create an array adapter 
    final ArrayAdapter<String> spinner1Adapter = new ArrayAdapter<String>(context, R.layout.spinner_layout, dataSpinner1);
    spinner1.setAdapter(spinner1Adapter);

    // setting listner for spinner1 to trigger when an spinner item is being 
    // clicked by the user  
    spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            // obtaining relevant data for spinner2 
            List<String> dataSpinner2 = data.get(dataSpinner1[position]);

            // crating an setting array adapter for spinner2
            ArrayAdapter<String> spinner2Adapter = new ArrayAdapter<String>(context, R.layout.spinner_layout, dataSpinner2);
            spinner2.setAdapter(spinner2Adapter);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32935281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档