spinner下拉列表的使用

spinner就相当于Html中的下拉列表框,在下面的例子里我们共同学习一下spinner的使用。在这一小节,让我们建一个小关于色彩的下拉列表,当某一个选项被选择时,弹出一个吐司消息。

1、建一个新的项目,打开res/values/strings.xml文件,写入如下代码:

01 < ?xml version="1.0" encoding="utf-8"?>
02 <resources>
03     <string name="app_name">MainHelloSpinner</string>
04     <string name="color">选择色彩:</string>
05     <string -array="" name="colors">
06         <item>黑色 | Black</item>
07         <item>蓝色 | Blue</item>
08         <item>棕色 | Brown</item>
09         <item>绿色 | Green</item>
10         <item>灰色 | Grey</item>
11         <item>粉色 | Pink</item>
12         <item>紫色 | Purple</item>
13         <item>红色 | Red</item>
14         <item>白色 | White</item>
15         <item>黄色 | Yellow</item>
16     </string>
17 </resources>

2、打开res/layout/main.xml 写入如下内容:

1 < ?xml version="1.0" encoding="utf-8"?>
2 <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:padding="10dip"android:layout_width="fill_parent" android:layout_height="wrap_content">
3     <textview android:layout_width="fill_parent"android:layout_height="wrap_content" android:layout_margintop="10dip"android:text="@string/color">
4     <spinner android:id="@+id/spinner" android:layout_width="fill_parent"android:layout_height="wrap_content" android:prompt="@string/color">
5 </spinner></textview>
6 </linearlayout>

3、打开MainHelloSpinner.java 写入下内容:

01 package android.basic.lesson10;
02  
03 import android.app.Activity;
04 import android.os.Bundle;
05 import android.view.View;
06 import android.widget.AdapterView;
07 import android.widget.AdapterView.OnItemSelectedListener;
08 import android.widget.ArrayAdapter;
09 import android.widget.Spinner;
10 import android.widget.Toast;
11  
12 public class MainHelloSpinner extends Activity {
13     /** Called when the activity is first created. */
14     @Override
15     public void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.main);
18  
19         //找到Xml中定义的下拉列表
20         Spinner spinner = (Spinner)findViewById(R.id.spinner);
21         //准备一个数组适配器
22         ArrayAdapter adapter = ArrayAdapter.createFromResource(
23                 this, R.array.colors, android.R.layout.simple_spinner_item);
24         //设置下拉样式
25         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
          adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);//圆圈
26         //为下拉列表设置适配器
27         spinner.setAdapter(adapter);
28  
29         //定义子元素选择监听器
30         OnItemSelectedListener oisl=  new OnItemSelectedListener() {
31  
32             @Override
33             public void onItemSelected(AdapterView<?> parent, View view,
34                     int position, long id) {
35                   Toast.makeText(MainHelloSpinner.this,"选择的色彩: " +
36                   parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
37  
38             }
39  
40             @Override
41             public void onNothingSelected(AdapterView<?> parent) {
42             }
43         };
44         //为下拉列表绑定事件监听器
45         spinner.setOnItemSelectedListener(oisl);
46     }
47 }

4、运行程序:

image

image

image

八、AutoCompleteTextView 自动完成文本框

AutoCompleteTextView和EditText一样都可以输入文本。但它可以和适配器绑定,当用户输入两个及以上字符时,系统将根据适配器提供的内容,进行文本的自动匹配提示。这个Web开发中Ajax里的一个标志性的功能,现在被Android弄成了一个标准组件。下面我们通过一个例子来学习一下:

1、建一个新的项目,打开res/values/strings.xml文件,写入如下代码:

1 < ?xml version="1.0"encoding="utf-8"?>     HelloAutoCompleteTextView                  shan dong         jiang su         an hui         zhe jiang         fu jian         shang hai         guang dong         guang xi         hai nan         hu bei         hu nan         he nan         jiang xi         bei jing         tian jin         he bei         shan xi         nei meng gu         ning xia         xin jiang         qing hai         shan xi         gan su         si chuan         yun nan         gui zhou         xi zang         chong qing         liao ning         ji lin         hei long jiang         tai wan         xiang guang         ao men          山东         江苏         安徽         浙江         福建         上海         广东         广西         海南         湖北         湖南         河南         江西         北京         天津         河北         山西         内蒙古         宁夏         新疆         青海         陕西         甘肃         四川         云南         贵州         西藏         重庆         辽宁         吉林         黑龙江         台湾         香港         澳门

2、打开res/layout/main.xml 写入如下内容:

1 < ?xml version="1.0" encoding="utf-8"?>

3、打开MainHelloAutoCompleteTextView.java 写入下内容:

01 package android.basic.lesson10;
02  
03 import android.app.Activity;
04 import android.os.Bundle;
05 import android.widget.ArrayAdapter;
06 import android.widget.AutoCompleteTextView;
07  
08 public class MainHelloAutoCompleteTextView extends Activity {
09     /** Called when the activity is first created. */
10     @Override
11     public void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setContentView(R.layout.main);
14  
15         //定义数组
16         String[] province = getResources().getStringArray(R.array.province);
17  
18         //定义数组适配器
19         ArrayAdapter adapter = newArrayAdapter(this, R.layout.list_item, province);
20  
21         //找到自动完成组件
22         AutoCompleteTextView atv = (AutoCompleteTextView) findViewById(R.id.AutoCompleteTextView01);
23  
24         //为其设置适配器
25         atv.setAdapter(adapter);
26  
27     }
28 }

4、运行程序,在英文输入法下输入”h”看看效果,再切换到中文输入法下输入”河”看看效果:

image

image

这里留意一下,android:completionThreshold=”1″ 属性设置了一个阀值,规定用户打了多少字符之后才出现自动提示,默认值是2,我们在这里改成了1。

九、DatePicker 日期选择控件 DatePickerDialog 日期选择对话框

日期选择的对话框漂亮,我们用一个例子演示一下:

1、main.xml的代码:

1 < ?xml version="1.0" encoding="utf-8"?>

其中文本框用来显示时间,按钮为了触发日期选择对话框,当然用其他组件来触发日期选择对话框也是的。

2、java代码:

01 package android.basic.lesson10;
02  
03 import java.util.Calendar;
04  
05 import android.app.Activity;
06 import android.app.DatePickerDialog;
07 import android.app.DatePickerDialog.OnDateSetListener;
08 import android.app.Dialog;
09 import android.os.Bundle;
10 import android.view.View;
11 import android.widget.Button;
12 import android.widget.DatePicker;
13 import android.widget.TextView;
14  
15 public class MainHelloDatePicker extends Activity {
16  
17     //准备公用属性
18     private TextView dateDisplay;
19     private Button pickDate;
20     private int mYear;
21     private int mMonth;
22     private int mDay;
23  
24     //准备对话框Id
25     static final int DATE_DIALOG_ID = 0;
26  
27     //准备日期设置监听器
28     private OnDateSetListener dsl = new DatePickerDialog.OnDateSetListener(){
29  
30         @Override
31         public void onDateSet(DatePicker view, int year, int monthOfYear,
32                 int dayOfMonth) {
33             mYear =year;
34             mMonth= monthOfYear;
35             mDay= dayOfMonth;
36             dateDisplay.setText(mYear+"-"+(mMonth+1)+"-"+mDay);
37         }
38     };
39  
40     //重写创建对话框方法
41     @Override
42     protected Dialog onCreateDialog(int id){
43         switch(id){
44         case DATE_DIALOG_ID:
45             //把Activity上下文、日期设置监听器、以及日期的年月日都作为参数传给那个新成立的对话框组件
46             return new DatePickerDialog(this, dsl, mYear, mMonth, mDay);
47         }
48         return null;
49     }
50  
51     /** Called when the activity is first created. */
52     @Override
53     public void onCreate(Bundle savedInstanceState) {
54         super.onCreate(savedInstanceState);
55         setContentView(R.layout.main);
56  
57         //得到当前日期
58         final Calendar c = Calendar.getInstance();
59         mYear = c.get(Calendar.YEAR);
60         mMonth = c.get(Calendar.MONTH);
61         mDay = c.get(Calendar.DAY_OF_MONTH);
62  
63         //获取xml中的组件
64         dateDisplay= (TextView)findViewById(R.id.dateDisplay);
65         pickDate = (Button)findViewById(R.id.pickDate);
66  
67         //给日期显示组件一个初始值
68         dateDisplay.setText(mYear+"-"+(mMonth+1)+"-"+mDay);
69  
70         //给按钮绑定点击监听器
71         pickDate.setOnClickListener(new View.OnClickListener() {
72             public void onClick(View v) {
73                 showDialog(DATE_DIALOG_ID);
74             }
75         });
76     }
77 }

3、运行程序

image

image

image 读者可以特别留意一下本节关于OnDateSetListener的代码,体会监听器的作用,有兴趣的同学可以看一下DatePickDialog和DatePick的源代码。

十、TimePicker 时间选择控件 和 TimePickerDialog 时间选择对话框

和上一小节的例子基本相同,就不举了。

本讲暂时就到这里。

原文出处:http://android.yaohuiji.com/archives/tag/spinner

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Android开发中,Spinner是一个常用的下列表组件,它让用户可以选择预定义的选项。使用Kotlin编写,你可以这样做: 1. **创建Spinner视图**: 首先在XML布局文件中添加一个Spinner元素,并设置它的id和数据源(如数组或字符串列表): ```xml <Spinner android:id="@+id/spinner_list" android:layout_width="wrap_content" android:layout_height="wrap_content" android:entries="@array/your_array_name" /> ``` 这里`@array/your_array_name`应该替换成你的实际数组资源。 2. **在Activity/Fragment中绑定并初始化**: 在对应的Kotlin类中,找到对应的`findViewById`方法获取Spinner实例,然后设置适配器(通常用 ArrayAdapter 或者 ListAdapter): ```kotlin val spinner = findViewById<Spinner>(R.id.spinner_list) val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, itemsList) adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinner.adapter = adapter ``` 3. **监听Spinner事件**: 添加一个`onItemSelectedListener`监听器来处理用户的选择: ```kotlin spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) { selectedOption = parent.getItemAtPosition(position) // 处理选中的选项 } override fun onNothingSelected(parent: AdapterView<*>) {} } ``` 4. **传递值**: 如果你需要在其他地方使用用户选择的值,可以在`onItemSelected`方法中获取并存储。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值