【问题标题】:How to update one spinner based on second spinner choice如何根据第二个微调器选择更新一个微调器
【发布时间】:2020-07-21 06:53:25
【问题描述】:

我必须基于微调器开发应用程序。

我已将spinner1 作为产品选择,我必须为spinner2 提供该特定产品类别中的数据,因此我必须根据spinner1 的基本选择更新spinner2

我进行了很多搜索,但我可以获得任何确定的示例代码或资源。

【问题讨论】:

标签: android


【解决方案1】:

我同意@user639183,有很多类似的问题......但是,有一些关于你如何做到这一点的解释:

  1. 为包含要显示的选项的数组创建成员变量。
  2. 用您的类别值填充您的第一个微调器。
  3. 使用 spinner1.setOnItemSelectedListener(...) 连接到 Spinner 的 OnItemSelected 事件
  4. 在事件侦听器中,使用相应的值填充第二个 Spinner。

第 1 步的示例:

private String[] spinner1values = new String[] { "cat1", "cat2" };
private String[][] spinner2values = new String[][] {
        new String[] { "a1", "b1", "c1" },
        new String[] { "a2", "b2" }
};

spinner1的种群如下:

Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, spinner1values);
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(adapter1);

到目前为止,如果您阅读 Spinners 的文档和示例,这绝对是直截了当的!

接下来,连接到OnItemSelectedListener

spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int position, long arg3) {
            // create a new adapter with the corresponding values
            ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(arg0.getContext(),
                    android.R.layout.simple_spinner_item, spinner2values[position]);
            adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            // set adapter
            ((Spinner)findViewById(R.id.spinner2)).setAdapter(adapter2);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // nothing selected, so set empty options
            ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(arg0.getContext(),
                    android.R.layout.simple_spinner_item, new String[0]);
            adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            ((Spinner)findViewById(R.id.spinner2)).setAdapter(adapter2);
        }
    });

注意,spinner2values中数组的顺序是对应于类别值的顺序的!

【讨论】:

  • @Hrushikesh 如果可行,请将此帖子标记为答案,谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
相关资源
最近更新 更多