Spinnerd的功能和用法

时间:2023-03-09 15:35:31
Spinnerd的功能和用法

此处的Spinner其实是一个列表选择框。不过Android的列表选择框并不是需要下拉列表的,而是相当于弹出一个菜单供用户选择。

Spinner和Gallery都继承了AbsSpinner,AbsSpinner继承了AdapterView,因此它也表现出AdpterView的特征;主要为AdapterView提供Adapter即可。

     实例:让用户选择、

     如果我们使用Spinner时已经可以确定下拉列表里的列表项,则完全不需要编写代码,只需要为Spinner指定android:entries属性即可实现Spinner;如果程序需要在运行时动态的决定Spinner的列表项,或程序需要对Spinner的列表项进行定制,则可使用Adapter为Spinner提供列表项。

如下布局文件中定义了来两个Spinner组件,其中第一个Spinner组将指定了android:entries属性,第二个Spinner组件没有指定android:entries属性,因此需要在Activity中为它设置Adapter。

该实例的界面布局文件如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- 定义一个Spinner组件,指定显示该Spinner组件的数据 -->
<Spinner android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/books"

android:prompt="@string/tip"/> <Spinner android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:prompt="@string/tip"/>"
</LinearLayout>

上面的界面布局文件中第一个Spinner使用@array/books指定数组资源。因此需要在res/value目录下使用XML文件来定义一份数组资源,该数组资源文件的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="books">
<item >疯狂Java讲义</item>
<item >疯狂Ajax讲义</item>
<item >疯狂XML讲义</item>
</string-array>
</resources>

上面的布局文件中第二个Spinner没有指定android:entries属性,Activity将会采用ArrayAdapter为该Spinner提供列表项目。下面是Activity的代码。

package org.crazyit.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.*; public class SpinnerTest extends Activity {
Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner_test);
//获取界面布局文件中的Spinner组件
spinner=(Spinner)findViewById(R.id.spinner);
String[] arr={"孙悟空","猪八戒","唐僧"};
//创建ArrayAdapter对象
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,
arr);
//为Spinner设置Adapter
spinner.setAdapter(adapter);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.spinner_test, menu);
return true;
} }

运行上面的程序将看到如下效果:
Spinnerd的功能和用法