在Android中實現級聯選擇框的效果可以通過使用Spinner和ArrayAdapter來實現。以下是一個簡單的例子:
<Spinner
android:id="@+id/firstSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Spinner
android:id="@+id/secondSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
String[] firstOptions = {"Option 1", "Option 2", "Option 3"};
String[][] secondOptions = {
{"Suboption 1", "Suboption 2", "Suboption 3"},
{"Suboption A", "Suboption B", "Suboption C"},
{"Suboption X", "Suboption Y", "Suboption Z"}
};
Spinner firstSpinner = findViewById(R.id.firstSpinner);
Spinner secondSpinner = findViewById(R.id.secondSpinner);
ArrayAdapter<String> firstAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, firstOptions);
firstAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
firstSpinner.setAdapter(firstAdapter);
ArrayAdapter<String> secondAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, secondOptions[0]);
secondAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
secondSpinner.setAdapter(secondAdapter);
// 設置第一個Spinner的選擇監聽器
firstSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
// 根據第一個Spinner選擇的選項來更新第二個Spinner的選項
ArrayAdapter<String> newSecondAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_spinner_item, secondOptions[position]);
newSecondAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
secondSpinner.setAdapter(newSecondAdapter);
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// 選擇為空時的處理邏輯
}
});
通過以上步驟,當用戶選擇第一個Spinner的選項時,第二個Spinner會根據選擇的選項來更新可選項列表,實現了級聯選擇框的效果。