【问题标题】:How to get multiple spinner in android where value of one spinner depends on value of other spinner?如何在android中获得多个微调器,其中一个微调器的值取决于其他微调器的值?
【发布时间】:2010-12-23 04:58:18
【问题描述】:

我想在 android 中有一个动态微调器,例如一个国家微调器,根据在 Country 中选择的值,我想获得另一个国家微调器。

【问题讨论】:

    标签: android


    【解决方案1】:

    我相信您可以使用 OnItemSelectedListener 解决这个问题。

    public void onCreate() {
         ....
        Country[] mCountries = ... ;
        final Spinner spinner1 = ...;
        final Spinner spinner2 = ...;
    
        spinner1.setAdapter(new ArrayAdapter(mCountries);
        spinner1.setOnItemSelectedListener( new OnItemSelectedListener() {
    
        void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            Country country = (Country) parent.getAdapter().getItem(position);
            spinner2.setAdapter(new ArrayAdapter(country.getStates());
         }
         void onNothingSelected(AdapterView<?> parent) {
            spinner2.setAdapter(null);
         }
        });
     ....
    }
    

    【讨论】:

    • 感谢格雷格的帮助。但是,如果微调器的数量不断增长呢?例如,如果我们选择州,那么我们应该为地区设置另一个微调器,依此类推。
    • 嗨 Ranjeet,您可能只使用一个微调器列表并在循环中应用相同的算法。该列表应按最通用的微调器排序到最具体的。或者您甚至可以创建新的微调器并将其添加到您在项目上选择的侦听器中的视图层次结构中。
    • 再次感谢格雷格。这就是我一直在寻找的。请再帮忙。我们可以有超过 1 个与 Spinner 关联的值吗?例如我们可以让 Spinner 以国家及其国家代码作为其 id。这就像我们正常的html方式一样。
    • 当您创建微调器时,您可能可以在新创建的微调器上调用 setTag 并传递适当的国家代码作为值。然后你应该可以通过 getTag 读出来
    • Greg,有没有什么方法可以在我们的 Spinner 中默认不选择任何内容?
    猜你喜欢
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    相关资源
    最近更新 更多