AdapterView中我们常用【常用的adapterView的使用方式都是类似的,都是通过适配器来适配数据源,然后将适配器设置到adapterView上进行显示】:
ListView:滑动列表。
Spinner:下拉列表。
GridView:网格图。
在这篇中我专门介绍一下Spinner:
Spinner:用户选择列表,下拉列表。其内容是文本信息,常用ArrayAdapter来填充。
两种为Spinner加载数据的方式:
1、在XML文件中定义数据资源,使用ArrayAdapter.createFromResource()方法把该资源加载进来。
2、直接在Java代码中使用setAdapter()方法。
代码实现:
显而易见,我们需要先设置一个Spinner控件。
activity_main.xml
MainActivity.java
private Spinner spinner;//adapterView
private ArrayAdapter adapter;//适配器adapter
private List list;//数据源
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
spinner = (Spinner) findViewById(R.id.spinner);
list = new ArrayList();
for (int i = 0; i < 10 ; i++){
list.add("数据" + i);
}
adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,list);
//设置适配器
spinner.setAdapter(adapter);
}
接下来我们使用我们之前用过的string-array属性来完成,首先当然是在values中创建一个xml,我们将其命名为datalist。
- 北京
- 上海
- 广州
- 深圳
- 西安
- 武汉
- 郑州
- 南京
- 南阳
接下来我们值需要在MainActivity.java中对其进行初始化以及设置。
private void initByXML() {
adapterXML = ArrayAdapter.createFromResource(this,R.array.datalist,android.R.layout.simple_list_item_1);
spinner.setAdapter(adapterXML);
}
运行结果:
我们考虑一下,除了这两种方式还有没有别的方法呢?
答案是肯定的,我们可以进入activity_main.xml中在
android:entries="@array/datalist"
在此android:entries = "array/datalist" : 表示下拉列表数据源集合。
那么为了确认我们可以设置当我们选中该项时,系统弹出已选中信息。我们可以添加这些步骤来完成:
首先我们在activity_main.xml中创建一个TextView标签用来显示提示信息:
接下来肯定要在MainActivity.java中设置点击事件。
tv = (TextView) findViewById(R.id.spinner_tv);
//设置spinner的选中的item
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
//当AdapterView中的item被选中的时候执行的方法。
public void onItemSelected(AdapterView> parent, View view, int position, long id) {
tv.setText(adapterXML.getItem(position));
}
@Override
//未选中时的时候执行的方法
public void onNothingSelected(AdapterView> parent) {
}
});
此时一定要注意:activity_main.xml中的entries属性一定要删除,否则会出现错误【init初始化没有使用】。
运行结果: