Сначала вам нужно создать 2 Spinner
в вашем XML.
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/spinner1"
android:layout_margin="10dp"
android:padding="10dp"/>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/spinner2"
android:layout_margin="10dp"
android:padding="10dp"/>
Затем вы должны объявить переменные для вашего Spinner
.
final Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
final Spinner spinner2 = (Spinner)findViewById(R.id.spinner2);
Теперь вам нужноString[]
для каждого Spinner
, но вы хотите изменить значение одного счетчика, поэтому вам необходимо создать String[]
для каждого случая.
String[] categories = new String[] {
"Category A", "Category B", "Category C"
};
String[] category_a_values = new String[] {
"Value 1 from category a", "Value 2 from category a", "Value 3 from category a"
};
String[] category_b_values = new String[] {
"Value 1 from category b", "Value 2 from category b", "Value 3 from category b"
};
String[] category_c_values = new String[] {
"Value 1 from category c", "Value 2 from category c", "Value 3 from category c"
};
String[]
категории для spinner1 , а другой для spinner2 .
Теперь нам нужно ArrayAdapter
для каждого String[]
.
final ArrayAdapter<String> categories_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
final ArrayAdapter<String> category_a_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_a_values);
final ArrayAdapter<String> category_b_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_b_values);
final ArrayAdapter<String> category_c_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_c_values);
Здесь мы устанавливаем ArrayAdapter
в spinner1 .
spinner1.setAdapter(categories_adapter);
Затем вы изменяете ArrayAdapter
из spinner2 , если другое значение spinner1 было выбрано.
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
spinner2.setAdapter(category_a_adapter);
break;
case 1:
spinner2.setAdapter(category_b_adapter);
break;
case 2:
spinner2.setAdapter(category_c_adapter);
break;
default:
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Весь код выглядит следующим образом
final Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
final Spinner spinner2 = (Spinner)findViewById(R.id.spinner2);
String[] categories = new String[] {
"Category A", "Category B", "Category C"
};
String[] category_a_values = new String[] {
"Value 1 from category a", "Value 2 from category a", "Value 3 from category a"
};
String[] category_b_values = new String[] {
"Value 1 from category b", "Value 2 from category b", "Value 3 from category b"
};
String[] category_c_values = new String[] {
"Value 1 from category c", "Value 2 from category c", "Value 3 from category c"
};
final ArrayAdapter<String> categories_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
final ArrayAdapter<String> category_a_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_a_values);
final ArrayAdapter<String> category_b_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_b_values);
final ArrayAdapter<String> category_c_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category_c_values);
spinner1.setAdapter(categories_adapter);
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
spinner2.setAdapter(category_a_adapter);
break;
case 1:
spinner2.setAdapter(category_b_adapter);
break;
case 2:
spinner2.setAdapter(category_c_adapter);
break;
default:
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});