使用两个微调器连接值
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
}
});
我想要那个
当我 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
}
});