android的控件有很多种,其中就有一个spinner的控件,这个控件其实就是一个下拉显示列表。spinner是位于 android.widget包下的,每次只显示用户选中的元素,当用户再次点击时,会弹出选择列表供用户选择,而选择列表中的元素同样来自适配器。spinner是view类的一个子类。
先看spinner的效果图:
代码:
mainactivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
package com.mecury.spinnertest;
import java.util.arraylist;
import android.support.v7.app.actionbaractivity;
import android.os.bundle;
import android.view.view;
import android.widget.adapterview;
import android.widget.arrayadapter;
import android.widget.spinner;
public class mainactivity extends actionbaractivity {
private spinner spinnerbutton;
private spinner spinner;
@override
protected void oncreate(bundle savedinstancestate) {
super .oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
spinnerbutton = (spinner) findviewbyid(r.id.spinnerbutton);
spinner = (spinner) findviewbyid(r.id.spinner2);
/*静态的显示下来出来的菜单选项,显示的数组元素提前已经设置好了
* 第二个参数:已经编写好的数组
* 第三个数据:默认的样式
*/
arrayadapter<charsequence> adapter =
arrayadapter.createfromresource(this, r.array.number_array, android.r.layout.simple_spinner_item);
//设置spinner中每个条目的样式,同样是引用android提供的布局文件
adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item);
spinnerbutton.setadapter(adapter);
spinnerbutton.setprompt("测试");
spinnerbutton.setonitemselectedlistener(new spinnerlistener());
/*
* 动态添显示下来菜单的选项,可以动态添加元素
*/
arraylist<string> list = new arraylist<string>();
list.add("1.苹果");
list.add("2.橘子");
/*
* 第二个参数是显示的布局
* 第三个参数是在布局显示的位置id
* 第四个参数是将要显示的数据
*/
arrayadapter adapter2 = new arrayadapter( this , r.layout.item, r.id.textview,list);
spinner.setadapter(adapter2);
spinner.setonitemselectedlistener( new spinner2listener());
}
class spinnerlistener implements android.widget.adapterview.onitemselectedlistener{
@override
public void onitemselected(adapterview<?> parent, view view,
int position, long id) {
//将选择的元素显示出来
string selected = parent.getitematposition(position).tostring();
}
@override
public void onnothingselected(adapterview<?> parent) {
system.out.println( "nothingselect" );
}
}
class spinner2listener implements android.widget.adapterview.onitemselectedlistener{
@override
public void onitemselected(adapterview<?> parent, view view,
int position, long id) {
string selected = parent.getitematposition(position).tostring();
}
@override
public void onnothingselected(adapterview<?> parent) {
system.out.println( "nothingselect" );
}
}
}
|
main_activity的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<linearlayout xmlns:android= "http://schemas.android.com/apk/res/android"
xmlns:tools= "http://schemas.android.com/tools"
android:layout_width= "match_parent"
android:layout_height= "match_parent"
android:orientation= "vertical"
android:padding= "10dp"
tools:context= "com.mecury.spinnertest.mainactivity" >
<textview
android:layout_width= "match_parent"
android:layout_height= "wrap_content"
android:text= "这是静态的:" />
<spinner
android:id= "@+id/spinnerbutton"
android:layout_width= "match_parent"
android:layout_height= "30dp" />
<textview
android:layout_width= "match_parent"
android:layout_height= "wrap_content"
android:text= "这是动态的:" />
<spinner
android:id= "@+id/spinner2"
android:layout_width= "match_parent"
android:layout_height= "wrap_content" />
</linearlayout>
|
因为第一种是静态的实现方法,我们需要事先设置好spinner要显示的内容。在string.xml文件中添加需要显示的内容:
1
2
3
4
5
6
7
8
9
10
11
|
<string-array name= "number_array" >
<item> 1000 </item>
<item> 2000 </item>
<item> 3000 </item>
<item> 4000 </item>
<item> 5000 </item>
<item> 6000 </item>
<item> 7000 </item>
<item> 8000 </item>
<item> 9000 </item>
</string-array>
|
第二种是静态的实现方法,我们使用自己的显示布局item.xml。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?xml version= "1.0" encoding= "utf-8" ?>
<linearlayout xmlns:android= "http://schemas.android.com/apk/res/android"
android:layout_width= "match_parent"
android:layout_height= "match_parent"
android:background= "#00ffff"
android:padding= "10dp"
android:orientation= "vertical" >
<textview
android:id= "@+id/textview"
android:layout_width= "match_parent"
android:layout_height= "wrap_content"
android:textsize= "20dp" />
</linearlayout>
|
以上内容是关于android应用开发之spinner控件的简单使用,希望对大家有所帮助。