学Android---Spinner下拉列表

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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值