阅读量:0
要实现多级联动选择,你可以使用Spinner和Adapter。以下是一个简单的示例,展示了如何使用Spinner Adapter实现两级联动选择:
- 首先,在
activity_main.xml
布局文件中添加两个Spinner:
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp" tools:context=".MainActivity"> <Spinner android:id="@+id/spinner_level1" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Spinner android:id="@+id/spinner_level2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" /> </LinearLayout>
- 在
MainActivity.java
中,创建两个Spinner并设置适配器:
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; public class MainActivity extends AppCompatActivity { private Spinner spinnerLevel1; private Spinner spinnerLevel2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinnerLevel1 = findViewById(R.id.spinner_level1); spinnerLevel2 = findViewById(R.id.spinner_level2); // 设置第一级Spinner的数据 ArrayAdapter<String> level1Adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, new String[]{"A", "B", "C"}); level1Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerLevel1.setAdapter(level1Adapter); // 设置第二级Spinner的数据 final ArrayAdapter<String> level2Adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item); level2Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerLevel2.setAdapter(level2Adapter); // 设置第一级Spinner的选择监听器 spinnerLevel1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // 根据第一级Spinner的选择更新第二级Spinner的数据 String selectedItem = parent.getItemAtPosition(position).toString(); if (selectedItem.equals("A")) { level2Adapter.clear(); level2Adapter.addAll(new String[]{"A1", "A2", "A3"}); } else if (selectedItem.equals("B")) { level2Adapter.clear(); level2Adapter.addAll(new String[]{"B1", "B2", "B3"}); } else if (selectedItem.equals("C")) { level2Adapter.clear(); level2Adapter.addAll(new String[]{"C1", "C2", "C3"}); } level2Adapter.notifyDataSetChanged(); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } }
这个示例中,我们创建了两个Spinner,分别为spinnerLevel1
和spinnerLevel2
。我们为spinnerLevel1
设置了一个包含"A"、"B"和"C"的适配器。当用户选择spinnerLevel1
中的一个选项时,我们会根据选项更新spinnerLevel2
的数据。这样就实现了两级联动选择。
你可以根据需要扩展此示例,以支持更多级别的联动选择。