Chinaunix首页 | 论坛 | 博客
  • 博客访问: 335269
  • 博文数量: 96
  • 博客积分: 2041
  • 博客等级: 大尉
  • 技术积分: 1080
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-20 14:08
文章分类

全部博文(96)

文章存档

2015年(2)

2013年(1)

2012年(93)

分类: 系统运维

2012-02-06 21:43:37

java.lang.Object
   android.view.View
     android.view.ViewGroup
       android.widget.AdapterView
         android.widget.AbsSpinner
           android.widget.Spinner

 

public CharSequence getPrompt () 取得提示文字
void  setPrompt(CharSequence prompt)  设置组件的提示文字
void  setAdapter(SpinnerAdapter adapter)  设置下拉列表项
public CharSequence getprompt()得到提示信息
public void setonItemCllickListener(AdapterView.OnItemClickListener)设置选项单击事件

在Spinner类中的setAdapter()方法,表示的是设置下拉列表框中的显示内容。SpinnerAdapter的功能就是一个适配器,会将所需要的数据进行包装并放在Spinner之中

在android中,可以直接在main.xml中配定结点,但是在定义此元素的时候却不能直接设置其显示的列表项,关于下拉列表框中的列表项有一下两种方式进行配置:

1直接通过资源文件配置

2通过Android.widget.ArrayAdapter类读取资源文件或者是指定具体设置的数据

 

配置Spinner:

                  android:id="@+id/mycity"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

对于Spinner的内容可以直接在 values文件夹中定义若干个资源文件。例如,以上如果要定义一个表示城市信息的下拉列表,则可以定义一个city_data.xml

city_data.xml


   
        西安
        北京
        哈尔滨
   

 

此表示配置了一个下拉选项,如果要想配置这个选项,则可以直接通过结点操作:

        android:id="@+id/mycity"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:entries="@array/city_labels"/>  配置所有下拉列表框中的显示内容,而此内容是通过city_data.xml文件之中加载进来的

配置下拉列表框中的prompt提示信息:


    Hello World, SpinnerProjectActivity!
    下拉列表
   请选择您喜欢的城市:

 

如果要想使用此信息,就急需修改

        android:id="@+id/mycity"
        android:prompt="@string/city_prompt" 加入提示信息
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:entries="@array/city_labels"/>

方式二:通过android.widget.ArrayAdapter类

color_data.xml


    表示颜色集合的标签
        红色
        绿色
        蓝色
   

这个配置文件将在ArrayAdapter类中进行读取,需要定义Spinner

        android:id="@+id/info_color"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="选择颜色" />
            android:id="@+id/mycolor"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

现在的Spinner的配置文件里面,不再加入任何的配置信息,只是定义了一个空的下拉表框。而随后在activity程序之中,要动态的进行配置。

在封装之前要使用ArrayAdapter

xxActivity.java

package your.packafge.namespace;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class SpinnerProjectActivity extends Activity
{
    private Spinner spiColor = null ;//表示要读取的颜色列表框
    private ArrayAdapter adapterColor = null ;//所有的数据都是String
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.spiColor = (Spinner)super.findViewById(R.id.mycolor);//取得颜色的下拉框
        this.spiColor.setPrompt("请选择喜欢的颜色:") ;
        this.adapterColor = ArrayAdapter.createFromResource(this,R.array.color_labels,android.R.layout.simple_spinner_item) ;//实例化ArrayAdapter
      

this.adapterColor.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) ;//设置格式

this.spiColor.setAdapter(this.adapterColor) ;//设置显示信息
    }
}

对于 ArrayAdapter,除了读取资源文件以外,还可能需要通过程序动态生成,所以需使用ArrayAdapter的另一种形式

        android:id="@+id/info_edu"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="选择学历" />
            android:id="@+id/myedu"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

 

xxActivity.java

package your.packafge.namespace;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class SpinnerProjectActivity extends Activity
{
    private Spinner spiColor = null ;//表示要读取的颜色列表框
    private Spinner spiEdu  = null ;//定义下拉列表
    private ArrayAdapter adapterColor = null ;//所有的数据都是String
    private ArrayAdapter adapterEdu = null ;//所有的数据都是字符串。CharSequence可以使用StringBuffer
    private List dataEdu = null ; //定义一个数据集合
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.spiColor = (Spinner)super.findViewById(R.id.mycolor);//取得颜色的下拉框
        this.spiColor.setPrompt("请选择喜欢的颜色:") ;
        this.adapterColor = ArrayAdapter.createFromResource(this,R.array.color_labels,android.R.layout.simple_spinner_item) ;//实例化ArrayAdapter
        this.adapterColor.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) ;//换个风格
        this.spiColor.setAdapter(this.adapterColor) ;//设置显示信息
     //配置List集合包装的下拉框内容
        this.dataEdu = new ArrayList() ;
        this.dataEdu.add("大学") ;
        this.dataEdu.add("研究生") ;
        this.dataEdu.add("高中生") ;
        this.spiEdu = (Spinner)super.findViewById(R.id.myedu);//取得学历下拉框
        this.spiEdu.setPrompt("选择你喜欢的学历:") ;
        this.adapterEdu = new ArrayAdapter(this,android.R.layout.simple_spinner_item,this.dataEdu) ;//准备好下拉列表框的内容
        this.adapterEdu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) ;

        this.spiEdu.setAdapter(this.adapterEdu) ;

    }
}

大部分情况都是利用资源文件方式配置的。 如果要求动态配置下拉内容的话,就必须理解上述方法了。

阅读(2849) | 评论(0) | 转发(0) |
0

上一篇:复选框CheckBox

下一篇:图片试图ImageView

给主人留下些什么吧!~~