这文章是看完Mars 老师的教学视频后根据自己理解写的,所以部分内容引用到Mars 老师视频。
ps :极力推荐初学android的朋友看Mars老师的视频。
正文:
spinner控件就好比如我们电脑的下拉选择菜单,但由于手机屏幕的显示范围有限,所以就会弹出一个类似于对话框的选择菜单。如下图:
-------------------------------->
第二就是构造spinner控件的步奏:
1.在布局文件中声明信息(如ID,宽高背景等)
<spinner android:"@+id/spinner" android:layout_wight="fill_parent" android:layout_height="wrap_content" />
2.在string.xml中声明一个数组,这个数组是弹出选择菜单的选项文字
<string-array name="planets_array"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> <item>Mars</item> <item>Jupiter</item> <item>Saturn</item> <item>Uranus</item> <item>Neptune</item> </string-array>
3.创建一个Arryadapter对象。并调用两个方法
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
其中createFromResource方法中有三个参数,分别表示:
this:上下文对象,
R.array.planets_array:引用在string.xml中声明的数组;
android.R.layout.simple_spinner_item:设置主题;
其中setDropDownViewResource
方法是用来设置spinner中每一个选项的主题;
4.得到一个spinner 对象然后设置对象的数据:
spinner.setaAdapter(adapter);//把上面设置好的adapter传进spinner中(相当于弹出菜单的内容);
spinner.setPrompt("测试");//弹出菜单的描述
第三是设置监听器来监听spinner的动作:
class spinnerListener implements OnItemSelectedListener {
...
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
// An item was selected. You can retrieve the selected item using
// parent.getItemAtPosition(pos)
}
public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}
}
OnItemSelectedListener
类中可以复写两个函数:
1.void
onItemSelected :用户选中了菜单中的某一项后程序要执行的动作(其中传入参数int pos就是被选中选项在菜单中的位置)
2.void onNothingSelected :当用户什么都没有选中的情况下要执行的动作;
附加:上面说的是静态设置选择菜单中的内容,也就是说菜单中的选中是固定不可变的,但实际应用上很多时候选项是需要随着用户的操作而改变的,所以android就有一个动态设置ArrayAdapter的方法:
过程是先设置一个List<T>的对象,再创建一个ArrayAdapter对象的构造函数:
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
传入四个参数:
1.context:上下文对象;
2.resource:设置菜单的样式(就是主题一般为R.layout.item的ID);
3.textViewResourceId:指定textView空间的ID;
4.T[] objects:就是上面设置的List对象;