学Android---Spinner下拉列表

来源:互联网 发布:淘宝买电视没有合格证 编辑:程序博客网 时间:2024/06/06 00:30

1、什么是Spinner?
如题所示,spinner的实质就是下拉列表,比如我们在网上填写居住地资料时,通常就会弹出一个下拉列表供我们选择,而不是让我们自由填写。效果图如下:
这里写图片描述

2、Spinner的实现
(1)首先,在activity_main.xml布局文件中添加spinner控件,设置其有关属性,代码很简单,如下:

    <Spinner        android:id="@+id/spinner"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>

(2)现在已经有了Spinner的框架了,同之前的GridVIew和ListView一样,我们需要将具体数据添加到控件中,说到添加数据,于是Adapter又出现啦~~。来到MainActivity:
首先需要初始化Spinner:

private Spinner spinner;spinner=(Spinner) findViewById(R.id.spinner);

然后就开始绑定数据了:

    // 添加一个下拉列表项的list存放数据    private List<String>list = new ArrayList<String>();    //定义适配器    private ArrayAdapter<String> adapter;    //设置数据源    list.add("北京");    list.add("上海");    list.add("天津");    list.add("重庆");    //为下拉列表定义一个数组适配器        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,list);    //为适配器设置下拉列表下拉时的菜单样式(这里使用默认样式)adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    //将适配器添加到下拉列表上    spinner.setAdapter(adapter);

这时运行程序就可以看到spinner已经设置好了,打开程序时默认选中的是list中的第一条数据,也就是“北京”。

3、为Spinner添加事件监听器
有布局就必须要有监听事件,否则这个布局就只是个摆设了,为了体现它的监听事件,我们在布局中添加一个TextView:

    <TextView        android:id="@+id/textview"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textSize="25sp"   //设置字体大小        android:textColor="#ff0000"  //设置字体颜色        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true"/>

然后在MainActivity中对它进行初始化等:

private TextView textview;textview=(TextView) findViewById(R.id.textview);textview.setText("您选择的城市是:");

然后添加Spinner的事件监听器:OnItemSelectedListener,它默认的方法如下:

//为下拉列表设置各种事件的响应,这个事件响应菜单被选中spinner.setOnItemSelectedListener(new OnItemSelectedListener() {    @Override    public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {        // TODO Auto-generated method stub        String cityName = adapter.getItem(position);        textview.setText("您选择的城市是:"+cityName);    }            @Override    public void onNothingSelected(AdapterView<?> arg0) {        // TODO Auto-generated method stub    }});

这样,当你选中某一项时,文字就会发生相应的改变,显示你所选择的信息,如上图所示的那样。

4、下面给出所有完整代码
(1)activity_main.xml:

<RelativeLayout        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"    tools:context=".MainActivity" >    <TextView        android:id="@+id/textview"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textSize="25sp"        android:textColor="#ff0000"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true"/>    <Spinner        android:id="@+id/spinner"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/textview"        android:layout_alignLeft="@+id/textview"/></RelativeLayout>

(2)MainActivity:

package com.example.spinnerdemo;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.ArrayAdapter;import android.widget.Spinner;import android.widget.TextView;public class MainActivity extends Activity {    private Spinner spinner;    private TextView textview;    // 1、添加一个下拉列表项的list    private List<String>list = new ArrayList<String>();    private ArrayAdapter<String> adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textview=(TextView) findViewById(R.id.textview);        spinner=(Spinner) findViewById(R.id.spinner);        textview.setText("您选择的城市是:");        //设置数据源        list.add("北京");        list.add("上海");        list.add("天津");        list.add("重庆");        //2、为下拉列表定义一个数组适配器          adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,list);        //3、为适配器设置下拉列表下拉时的菜单样式        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);        //4、将适配器添加到下拉列表上        spinner.setAdapter(adapter);        //5、为下拉列表设置各种事件的响应,这个事件响应菜单被选中        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView<?> parent, View view,                    int position, long id) {                // TODO Auto-generated method stub                String cityName = adapter.getItem(position);                textview.setText("您选择的城市是:"+cityName);            }            @Override            public void onNothingSelected(AdapterView<?> arg0) {                // TODO Auto-generated method stub            }        });    }}
0 0
原创粉丝点击