【问题标题】:spinner selection defines choices for another spinner微调器选择定义另一个微调器的选择
【发布时间】:2012-08-03 01:23:23
【问题描述】:

我有一个关于旋转器的问题,但在网上找不到任何关于如何操作的信息。

我的应用中有一个微调器,可以选择地区,即西南、东南。

我希望第二个微调器的可用选择取决于第一个微调器中所做的选择。即当用户选择西南时,第二个微调器上的选择将是查尔斯湖、爱荷华州、亚瑟湖等。当用户选择东南部时,第二个微调器的选择将是 Gretna、新奥尔良、Luling 等。

我该怎么做呢?

示例将不胜感激!

谢谢!

【问题讨论】:

    标签: android android-spinner


    【解决方案1】:

    试试这个代码..

    希望对你有帮助...

    public class MainActivity extends Activity {
    
    Spinner sp1,sp2;
    ArrayAdapter<String> adp1,adp2;
    List<String> l1,l2;
    int pos;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        l1=new ArrayList<String>();
    
        l1.add("A");
        l1.add("B");
    
        sp1= (Spinner) findViewById(R.id.spinner1);
        sp2= (Spinner) findViewById(R.id.spinner2);
    
        adp1=new ArrayAdapter<String> (this,android.R.layout.simple_dropdown_item_1line,l1);
        adp1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
        sp1.setAdapter(adp1);
    
        sp1.setOnItemSelectedListener(new OnItemSelectedListener() {
    
            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub
                pos=arg2;
                add();
    
            }
    
            private void add() {
                // TODO Auto-generated method stub
                Toast.makeText(getBaseContext(), ""+pos, Toast.LENGTH_SHORT).show();
    
                switch(pos)
                {
                case 0:
                    l2= new ArrayList<String>();                    
                    l2.add("A 1");
                    l2.add("A 2");
    
                    adp2=new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_dropdown_item_1line,l2);
                    adp2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
                    sp2.setAdapter(adp2);
    
                    select();
    
                    break;
                case 1:
                    l2= new ArrayList<String>();                    
                    l2.add("B 1");
                    l2.add("B 2");
    
                    adp2=new ArrayAdapter<String>(MainActivity.this,
                            android.R.layout.simple_dropdown_item_1line,l2);
                    adp2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
                    sp2.setAdapter(adp2);
    
                    select();
    
                    break;
                }
    
            }
    
            private void select() {
                // TODO Auto-generated method stub
    
                sp2.setOnItemSelectedListener(new OnItemSelectedListener() {
    
                    @Override
                    public void onItemSelected(AdapterView<?> arg0, View arg1,
                            int arg2, long arg3) {
                        // TODO Auto-generated method stub
                        Toast.makeText(getBaseContext(), "Test "+arg2, Toast.LENGTH_SHORT).show();
    
                    }
    
                    @Override
                    public void onNothingSelected(AdapterView<?> arg0) {
                        // TODO Auto-generated method stub
    
                    }
                });
    
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
    
            }
        });
        }
    
    }
    

    【讨论】:

    • 就是这样!谢谢!我只需要进行一些更改以匹配我的数据,添加另一个微调器,然后打开一个新活动!
    【解决方案2】:

    基本上你会捕捉到第一个微调器选择事件。在此之后,您将更改第二个微调器可用列表的内容。您可能还必须调用 invalidateView() 才能使更改生效。所以真的是三个部分

    1) 在 onClick 处理程序中捕获选择。

    2)修改第二个spinner的数据,过滤后将spinner2的数据重置为调整后的数据。

    3) 如果需要,使第二个微调器无效,并可能在 containsView 上使视图无效,这样它就会全部显示出来。

    因此,将其分解为这三个步骤,如果您对其中任何一个步骤有任何疑问,请告诉我们。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多