安卓2个Spinner控制中的数据如何进行联动
时间: 2023-09-27 08:05:22 浏览: 144
android spinner 实现联动代码
4星 · 用户满意度95%
### 回答1:
你可以在两个 Spinner 之间设置监听器,然后在第一个 Spinner 的选择改变时,根据所选项更新第二个 Spinner 中的数据。
你可以在第一个 Spinner 中设置 OnItemSelectedListener,然后在 onItemSelected 方法中更新第二个 Spinner 的数据。
例如:
```
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// 获取选中的项
String selectedItem = (String) parent.getItemAtPosition(position);
// 根据选中的项更新第二个 Spinner 中的数据
updateSpinner2Data(selectedItem);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// 什么也不做
}
});
```
updateSpinner2Data 方法可以用来根据第一个 Spinner 中的选择更新第二个 Spinner 中的数据,例如:
```
private void updateSpinner2Data(String selectedItem) {
List<String> data = new ArrayList<>();
if (selectedItem.equals("选项1")) {
data.add("子选项1");
data.add("子选项2");
} else if (selectedItem.equals("选项2")) {
data.add("子选项3");
data.add("子选项4");
}
// 创建数据源适配器
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, data);
// 为适配器设置下拉列表下拉时的菜单样式。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// 为第二个 Spinner 设置适配器
spinner2.setAdapter(adapter);
}
```
希望这能帮到你。
### 回答2:
在安卓中,两个Spinner控制的数据联动可以通过监听器实现。首先,我们需要为两个Spinner控件分别设置适配器,以及数据源。接下来,在第一个Spinner的监听器中,我们可以通过获取其选择的项的位置,从而获取对应的值。这个值将作为第二个Spinner的新的数据源。接着,我们需要更新第二个Spinner的适配器,重新设置数据源。最后,调用第二个Spinner的适配器的notifyDataSetChanged()方法,使它的数据源得到更新并刷新。这样,当我们在第一个Spinner中选择一个新的项时,第二个Spinner中显示的数据就会根据新的选择进行联动更新。
这个联动的过程可以在第一个Spinner的OnItemSelectedListener接口的onItemSelected()方法中完成。在这个方法中,我们可以编写代码来获取第一个Spinner的选择项,并据此更新第二个Spinner的数据源。接着,我们需要为第二个Spinner创建一个新的适配器,并将新的数据源设置给它。最后,我们需要调用适配器的notifyDataSetChanged()方法来更新第二个Spinner的数据。这个方法会通知Spinner控件,数据源已经改变,需要刷新显示。这样,当我们在第一个Spinner中选择一个新的项时,第二个Spinner中显示的数据就会根据新的选择进行联动更新。
总结来说,安卓中两个Spinner控制的数据联动可以通过设置Spinner的适配器和监听器来实现。在第一个Spinner的监听器中,根据选择项获取对应的值,然后更新第二个Spinner的数据源,并刷新显示。这样,两个Spinner控制的数据就可以实现联动。
### 回答3:
在安卓开发中,使用两个Spinner控件进行联动是一种常见的需求。以下是一个简单的实现方法:
首先,在XML布局文件中定义两个Spinner控件,并分别设置id和监听器:
```xml
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/spinner1_items"
android:onItemSelectedListener="onSpinner1ItemSelected" />
<Spinner
android:id="@+id/spinner2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onItemSelectedListener="onSpinner2ItemSelected" />
```
然后,在Java代码中获取两个Spinner控件的实例,并初始化它们的数据源:
```java
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);
ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(
this,
R.array.spinner1_items,
android.R.layout.simple_spinner_item
);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter1);
ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
this,
R.array.spinner2_items,
android.R.layout.simple_spinner_item
);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(adapter2);
```
在上述代码中,R.array.spinner1_items和R.array.spinner2_items是两个string-array资源,用于存储Spinner控件的选项。
最后,设置两个Spinner控件的监听器,在其中进行联动操作:
```java
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// 获取第一个Spinner的选项
String selectedItem = parent.getItemAtPosition(position).toString();
// 根据选项设置第二个Spinner的数据源
ArrayAdapter<CharSequence> adapter = null;
if ("选项1".equals(selectedItem)) {
adapter = ArrayAdapter.createFromResource(
MainActivity.this,
R.array.spinner2_options1,
android.R.layout.simple_spinner_item
);
} else if ("选项2".equals(selectedItem)) {
adapter = ArrayAdapter.createFromResource(
MainActivity.this,
R.array.spinner2_options2,
android.R.layout.simple_spinner_item
);
} else if ("选项3".equals(selectedItem)) {
adapter = ArrayAdapter.createFromResource(
MainActivity.this,
R.array.spinner2_options3,
android.R.layout.simple_spinner_item
);
}
if (adapter != null) {
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(adapter);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// do nothing
}
});
```
通过在第一个Spinner的监听器中获取选中的选项,然后根据选项设置第二个Spinner的数据源,从而实现了两个Spinner控件的联动效果。
需要注意的是,需要根据实际需求修改其中的选项和选项对应的数据源。以上仅为示例代码。
阅读全文