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;
    }

}

运行上面的程序将看到如下效果:

 

 

posted @ 2013-10-21 09:22  TealerProg  Views(488)  Comments(0Edit  收藏  举报