展会信息港展会大全

Android spinner详解 安卓开发教程
来源:互联网   发布日期:2015-10-02 15:56:15   浏览:2073次  

导读:Spinner控件也是一种列表类型的控件,它的继承关系如下:java.lang.Object android.view.View android.view.ViewGroup android.widget.AdapterViewT extends android.widget.Adapter android.wi......

Spinner控件也是一种列表类型的控件,它的继承关系如下:

java.lang.Object

android.view.View

android.view.ViewGroup

android.widget.AdapterView<T extends android.widget.Adapter>

android.widget.AbsSpinner

android.widget.Spinner

android.widget.Spinner 继承了android.view.ViewGroup类。下面安排一个案例如图6-5,有两个Spinner,颜色选择Spinner和星座选择 Spinner。点击颜色选择Spinner右边的 按钮,如图6-6所示,弹出单选对话框。

图6-5 Spinner控件图6-6 颜色选择Spinner

点击星座选择Spinner右边的 按钮,如图6-7所示,弹出列表对话框。

图6-7 星座选择Spinner

程序代码请参考代码清单6-3:

【代码清单6-3】 chapter6_2/src/com/work/SpinnerActivity.java

public class SpinnerActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

final TextView txt2 = (TextView) findViewById(R.id.TextView02);

Spinner s1 = (Spinner) findViewById(R.id.Spinner01);

final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(

this, R.array.colors, android.R.layout.simple_spinner_item);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

s1.setAdapter(adapter);

s1.setOnItemSelectedListener(

new OnItemSelectedListener() {

public void onItemSelected(

AdapterView<?> parent, View view, int position, long id) {

txt2.setText(adapter.getItem(position).toString());

}

public void onNothingSelected(AdapterView<?> parent) {

txt2.setText("没选中的");

}

});

final TextView txt4 = (TextView) findViewById(R.id.TextView04);

Spinner s2 = (Spinner) findViewById(R.id.Spinner02);

ArrayAdapter<CharSequence> adapterC = new ArrayAdapter<CharSequence>(this,

android.R.layout.simple_spinner_item, CONSTELLATIONS);

adapterC.setDropDownViewResource(android.R.layout.simple_spinner_item);

s2.setAdapter(adapterC);

s2.setOnItemSelectedListener(

new OnItemSelectedListener() {

public void onItemSelected(

AdapterView<?> parent, View view, int position, long id) {

txt4.setText(CONSTELLATIONS[position]);

}

public void onNothingSelected(AdapterView<?> parent) {

txt4.setText("没选中的");

}

});

}

static final String[] CONSTELLATIONS = new String[] {

"白羊座", "金牛座", "双子座",

"巨蟹座", "狮子座", "处女座",

"天枰座", "天蝎座", "射手座",

"魔蝎座", "水瓶座", "双鱼座"

};

}

第一个颜色选择Spinner数据来源于Values文件夹内的arrays.xml文件,

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string-array name="colors">

<item>红色</item>

<item>橙色</item>

<item>黄色</item>

<item>绿色</item>

<item>蓝色</item>

<item>紫色</item>

</string-array>

</resources>

通过下面的方法从一个资源XML文件中加载数据,创建一个数组类的适配器对象,布局文件是使用系统提供的layout.simple_spinner_item,这里布局文件设置的是Spinner布局样式。

final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(

this, R.array.colors, android.R.layout.simple_spinner_item);

而弹出的下拉列表的样式是由Spinner的适配器的setDropDownViewResource()方法设置的。

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

第二个Spinner用于星座选择,数据是用数组存储的。这两个Spinner的setOnItemSelectedListener()方法的事件处理如下:

s1.setOnItemSelectedListener(

new OnItemSelectedListener() {

public void onItemSelected(

AdapterView<?> parent, View view, int position, long id) {

txt2.setText(adapter.getItem(position).toString());

}

public void onNothingSelected(AdapterView<?> parent) {

txt2.setText("没选中的");

}

});

其中的onItemSelected(AdapterView<?> parent, View view, int position, long id)方法是选中选择项目时触发的,其中的position选择项目的位置,id是选择项目的编号。而什么都不选的方法是 onNothingSelected(AdapterView<?> parent)。

赞助本站

人工智能实验室

相关热词: spinner

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港