1. 实验内容简介
Spinner同RadioGroup一样,多个子元素组合成一个Spinner。多个子元素之间相互影响,最多只能有一个被选中。Spinner通过数组适配器读取定义的子元素。这种设计方式被称为适配器模式,适配器模式建议定义一个包装类,包装有不兼容接口的对象。
适配器:在安卓中,顾名思义就是把数据变成符合界面风格的形式,并且通过ListView显示出来。也就是说适配器是数据和界面之间的桥梁。
适配器在数据库中的数据(后台)和显示页面(前端)中充当一个转换器的角色,数据库中的数据(如数组,链表,数据库,集合等)通过适配器变成类手机页面能够正常显示的数据。可以看作是界面数据绑定的一种理解。假设把数据、适配器和ListView(页面)比喻成一个MVC模式的话,那么适配器(Adapter)在这中间就充当了Controller的角色。
使用步骤:
步骤1:声明Spinner变量
步骤2:通过FindViewById绑定,设置数据源和适配器
步骤3:监听用户输入动作
2. UI界面布局
![](/qrcode.jpg)
对应的大纲:
新建XML文件设置数据源,在 res文件夹下的 values 文件夹下新建一 xml文件,命名为 array.xml 。打开并添加如下代码: 。
<?xml version="1.0"encoding="utf-8"?>
<resourcesxmlns:android="http://schemas.android.com/apk/res/android">
<string-array name="fruits">
<item >苹果</item>
<item >梨子</item>
<item >西瓜</item>
<item >桔子</item>
</string-array>
</resources>
3. 代码编写和调试
public class MainActivity extends Activity {
Spinner spinner1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner1 =(Spinner) findViewById(R.id.spinner1);
// 新建数组适配器并关联XML的array数据
ArrayAdapter<CharSequence>adapter = ArrayAdapter.createFromResource(
this,R.array.fruits, android.R.layout.simple_spinner_item);
// 设置数组适配器显示样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// 下拉列表关联适配器
spinner1.setAdapter(adapter);
// 监听下拉列表
spinner1.setOnItemSelectedListener(newOnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
intposition, long id) {
Toast.makeText(
MainActivity.this,
"选择的水果:"
+parent.getItemAtPosition(position).toString(),
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(MainActivity.this,"没有选择", Toast.LENGTH_SHORT)
.show();
}
});
}
}