【问题标题】:Connect values with Two spinners [duplicate]用两个微调器连接值[重复]
【发布时间】:2016-11-29 01:20:11
【问题描述】:

我想要那个

当我从 spinner1 中选择一个项目时,spinner2 中的值会相应改变

举例

当我从 spinner1 中选择“USA”时,“Los Angeles”和“New York”会显示在 spinner2 中。
当我从 spinner1 中选择“Germany”时,spinner2 中会显示“Berlin”和“Munich”。

【问题讨论】:

标签: android android-spinner


【解决方案1】:

试试这样的:

private void setSpinner1() {
    Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.cities, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(adapter);
    String[] countries = getResources().getStringArray(R.array.countries);
    spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

       public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
            loadContentOnSpinner2(countries[pos]);
        }

       public void onNothingSelected(AdapterView<?> parent) {

       }

    });
}

private void loadContentOnSpinner2(String country) {
    Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);
    ArrayAdapter<CharSequence> adapter = null;
    if(country.equals("USA"))
       ArrayAdapter.createFromResource(this, R.array.usa_states, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(adapter);
}

在arrays.xml(res/values 文件夹)中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="countries">
        <item>USA</item>
        <item>...</item>
    </string-array>
</resources>

<resources>
    <string-array name="usa_states">
        <item>New York</item>
        <item>...</item>
    </string-array>
</resources>

【讨论】:

  • 我在这一行出现错误 loadContentOnSpinner2(countries.get(pos)) cannot resolve symbol 'countries
  • 我更新了代码。再试一次。
  • 运行程序时看不到Item
【解决方案2】:

您已经在 First Spinner onItemSelected 这个方法中设置了第二个 Spinner adpater 值。

CountrySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                 // get here State Spinner
            }

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

            }
        });

【讨论】:

    【解决方案3】:

    当您使用 OnItemSelectedListener 选择第一个微调器时,请使用以下代码。

    spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
    
                    public void onItemSelected(AdapterView<?> parentView,
                            View selectedItemView, int position, long id) {
    
                    if(pos == 1){
                      spinner2.setAdapter(adapter2);
                    }else{
                      spinner2.setAdapter(adapter3);
                    } 
    
                    }
    
                    public void onNothingSelected(AdapterView<?> arg0) {// do nothing
                    }
    
                });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      相关资源
      最近更新 更多