使用两个微调器连接值

Connect values with Two spinners

我想要那个

当我 select 来自 spinner1 的项目时,spinner2 中的值相应地改变

例如

当我从 spinner1 select "USA" 时,"Los Angeles" 和 "New York" 显示在 spinner2.
当我从 spinner1 select "Germany" 时,"Berlin" 和 "Munich" 显示在 spinner2.

您已在第一个 Spinner onItemSelected 此方法中设置了第二个 Spinner 适配器值。

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) {

            }
        });

尝试这样的事情:

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>

当您使用 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
                }

            });