- 浏览: 1749221 次
- 性别:
- 来自: 大连
博客专栏
-
Spring数据库访问系列...
浏览量:172919
-
Android学习笔记
浏览量:366749
-
iBatis开发详解
浏览量:188430
-
Objective-C学习...
浏览量:98899
最新评论
-
iLidy:
引用[/c
Hibernate持久化对象的生命周期详解 -
fengzigogo:
您好,有这个项目架构的源码下载地址吗?
一种Java Web应用开发框架的构建(基于Struts2+Spring+FreeMarker)之一 -
spring_springmvc:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
用Maven构建Java Web开发环境(Jetty容器)之二 -
springdata_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
Spring 3之MVC & Security简单整合开发(二) -
赵庆辉:
看帖回复是美德,楼主讲的很清晰明了,看了豁然开朗.
Java String对象的经典问题(new String())
接上文
在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可。这是在Web开发中一个必不可少的交互性组件,在Android中的对应实现就是Spinner。
首先来看一下Spinner的文档:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.AdapterView<T extends android.widget.Adapter>
↳ android.widget.AbsSpinner
↳ android.widget.Spinner
Spinner的继承结构比较复杂,在继承树中有AdapterView,这是比较重要的一项,因为我们就是通过Adapter来为Spinner设置下拉列表项的。
Spinner的重点问题就是下拉列表项的配置,通过之前组件的了解,我们知道资源组件的配置有两种方式,一种是通过XML文件来配置,一种是通过程序来配置。而从Spinner的文档中,我们可以看到,对它的配置需要使用Adapter类的实现。
下面我们就来看看Spinner的使用,在Eclipse中创建SpinnerDemo项目,编写代码:
这里放置了一个空的Spinner,直接运行程序,我们看到如下效果:
就是一个空的下拉框,什么都没有,下面我们开始向这个下拉框中设置列表项。首先我们使用XML资源文件的配置方式,在values目录下创建spinner_data.xml,并设置如下内容:
不难理解<string-array>表示字符串的数组,就是可以定义多个字符串的项目,在其中,我们仍然使用<item>来定义每一项,设置好后,将其应用到Spinner中:
配置Spinner组件中的entries属性即可引用我们在spinner_data.xml中定义的degrees项目组了,不难想到,它已经被注册到R.java中了。运行程序,我们得到如下显示效果:
这里可以看到,我们虽然设置了提示信息,但是点击下拉框后并没有出现Spinner的提示,而是直接显示出了我们设置的选项,这样的显示并不是很好看,我们希望在弹出的Spinner选择框上也给出提示,那么我们可以这么来设置:
也就是在Spinner组件中加上prompt属性即可,注意这里不能直接使用文本了,而需要使用引用,那么我们在strings.xml中加入如下信息:
我们再次运行程序,就可以看到如下的效果:
这次再点击Spinner,弹出的下拉框中就有了提示的prompt,显示效果好了很多。
下面我们看看如何通过程序来控制Spinner和列表项,之前说过要使用程序,就要用到Adapter类,这里我们使用实现类ArrayAdapter来进行操作。首先我们使用ArrayAdapter读取XML配置文件的方式来说明:
我们在spinner_data.xml中再设置一组值来表示城市,有了列表项,我们还需要再创建一个Spinner,那么在main.xml中,再设置一个Spinner:
那么在Activity程序中,我们可以如下来编写代码:
根据代码中的注释,不难理解每行代码的意思,这和在XML中配置Spinner是类似的。要多说的一点就是这里我们为ArrayAdapter设置的泛型是CharSequence,而不是直接使用String,这是出于以后对StringBuffer的兼容,来看下CharSequence的文档:
不难看出,String和StringBuffer都是CharSequence的子类,这里定义为CharSequence后直接使用字符串格式是没有问题的。
下面直接运行程序,我们可以看到如下效果:
此时列表项的显示和之前的不同,是因为我们在实例化ArrayAdapter时使用了android.R.layout.simple_spinner_item,也就是使用了简单的spinner项。
可以通过如下的代码控制显示风格:
之后再次运行代码,就可以看到和之前一样的显示效果了。
下面来看第二种ArrayAdapter的使用方式,就是在程序中动态生成结果来进行填充,我们修改上面的代码,最终为:
在此之前,不要忘了在main.xml中为我们的布局管理器加上ID属性,这样才能在程序中进行调用,运行程序,我们可以看到如下效果:
点击即可弹出下拉列表框显示具体内容了。
下面我们在Android设备上来运行Spinner的示例程序,运行环境为Motorola Defy+ 2.3.7 MIUI,所得到的具体显示效果为:
可以看出,这和我们在模拟器中的显示效果略有不同,那么就是手机所刷ROM对我们组件显示风格的影响了,也就是说,在不同的ROM下,会有不同的显示效果。
本部分代码请参考附件。
接下文
在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可。这是在Web开发中一个必不可少的交互性组件,在Android中的对应实现就是Spinner。
首先来看一下Spinner的文档:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.AdapterView<T extends android.widget.Adapter>
↳ android.widget.AbsSpinner
↳ android.widget.Spinner
Spinner的继承结构比较复杂,在继承树中有AdapterView,这是比较重要的一项,因为我们就是通过Adapter来为Spinner设置下拉列表项的。
Spinner的重点问题就是下拉列表项的配置,通过之前组件的了解,我们知道资源组件的配置有两种方式,一种是通过XML文件来配置,一种是通过程序来配置。而从Spinner的文档中,我们可以看到,对它的配置需要使用Adapter类的实现。
下面我们就来看看Spinner的使用,在Eclipse中创建SpinnerDemo项目,编写代码:
<TextView android:id="@+id/degreeLabel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请选择您的学历" /> <Spinner android:id="@+id/degree" android:layout_width="fill_parent" android:layout_height="wrap_content" />
这里放置了一个空的Spinner,直接运行程序,我们看到如下效果:
就是一个空的下拉框,什么都没有,下面我们开始向这个下拉框中设置列表项。首先我们使用XML资源文件的配置方式,在values目录下创建spinner_data.xml,并设置如下内容:
<string-array name="degrees"> <item>初中及以下</item> <item>高中</item> <item>大学</item> <item>研究生及以上</item> </string-array>
不难理解<string-array>表示字符串的数组,就是可以定义多个字符串的项目,在其中,我们仍然使用<item>来定义每一项,设置好后,将其应用到Spinner中:
<Spinner android:id="@+id/degree" android:layout_width="fill_parent" android:layout_height="wrap_content" android:entries="@array/degrees" />
配置Spinner组件中的entries属性即可引用我们在spinner_data.xml中定义的degrees项目组了,不难想到,它已经被注册到R.java中了。运行程序,我们得到如下显示效果:
这里可以看到,我们虽然设置了提示信息,但是点击下拉框后并没有出现Spinner的提示,而是直接显示出了我们设置的选项,这样的显示并不是很好看,我们希望在弹出的Spinner选择框上也给出提示,那么我们可以这么来设置:
<Spinner android:id="@+id/degree" android:layout_width="fill_parent" android:layout_height="wrap_content" android:entries="@array/degrees" android:prompt="@string/degrees_prompt" />
也就是在Spinner组件中加上prompt属性即可,注意这里不能直接使用文本了,而需要使用引用,那么我们在strings.xml中加入如下信息:
<string name="degrees_prompt">您的学历是:</string>
我们再次运行程序,就可以看到如下的效果:
这次再点击Spinner,弹出的下拉框中就有了提示的prompt,显示效果好了很多。
下面我们看看如何通过程序来控制Spinner和列表项,之前说过要使用程序,就要用到Adapter类,这里我们使用实现类ArrayAdapter来进行操作。首先我们使用ArrayAdapter读取XML配置文件的方式来说明:
<string-array name="cities"> <item>北京</item> <item>上海</item> <item>大连</item> </string-array>
我们在spinner_data.xml中再设置一组值来表示城市,有了列表项,我们还需要再创建一个Spinner,那么在main.xml中,再设置一个Spinner:
<TextView android:id="@+id/cityLabel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请选择您所在的城市" /> <Spinner android:id="@+id/city" android:layout_width="fill_parent" android:layout_height="wrap_content" />
那么在Activity程序中,我们可以如下来编写代码:
package org.ourpioneer; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Spinner; public class SpinnerDemoActivity extends Activity { private Spinner city = null;// 要读取的下拉列表 private ArrayAdapter<CharSequence> cities = null;// 要使用的Adapter public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.main); city = (Spinner) super.findViewById(R.id.city);// 获取下拉列表 city.setPrompt("您所在的城市是:");// 设置Prompt cities = ArrayAdapter.createFromResource(this, R.array.cities,android.R.layout.simple_spinner_item);// 实例化ArrayAdapter city.setAdapter(cities);// 设置显示信息 } }
根据代码中的注释,不难理解每行代码的意思,这和在XML中配置Spinner是类似的。要多说的一点就是这里我们为ArrayAdapter设置的泛型是CharSequence,而不是直接使用String,这是出于以后对StringBuffer的兼容,来看下CharSequence的文档:
不难看出,String和StringBuffer都是CharSequence的子类,这里定义为CharSequence后直接使用字符串格式是没有问题的。
下面直接运行程序,我们可以看到如下效果:
此时列表项的显示和之前的不同,是因为我们在实例化ArrayAdapter时使用了android.R.layout.simple_spinner_item,也就是使用了简单的spinner项。
可以通过如下的代码控制显示风格:
cities.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// 设置列表项的显示风格
之后再次运行代码,就可以看到和之前一样的显示效果了。
下面来看第二种ArrayAdapter的使用方式,就是在程序中动态生成结果来进行填充,我们修改上面的代码,最终为:
package org.ourpioneer; import java.util.Arrays; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.TextView; public class SpinnerDemoActivity extends Activity { // 省略City部分Spinner和ArrayAdapter声明的代码 private Spinner age = null;// 声明一个Spinner组件,表示年龄 private ArrayAdapter<CharSequence> ages = null;// 声明一个ArrayAdapter来适配年龄 private List<CharSequence> age_data = null;// 声明一个放置年龄数据的List public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.main); // 省略City部分的设置代码 age = new Spinner(this);// 创建Spinner对象 age.setPrompt("您的年龄段是:");// 设置Prompt age_data = Arrays.asList(new CharSequence[] { "10岁以下", "10-20岁", "20-30岁", "30-40岁", "40-50岁", "50-60岁", "60岁以上" });// 设置年龄段数组并最终转换为List类型 ages = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, age_data);// 实例化ArrayAdapter ages.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);// 设置列表项显示风格 age.setAdapter(ages);// 设置显示信息 LinearLayout layout = (LinearLayout) super.findViewById(R.id.layout); TextView ageLabel=new TextView(this); ageLabel.setText("请选择您的年龄段"); layout.addView(ageLabel); layout.addView(age); } }
在此之前,不要忘了在main.xml中为我们的布局管理器加上ID属性,这样才能在程序中进行调用,运行程序,我们可以看到如下效果:
点击即可弹出下拉列表框显示具体内容了。
下面我们在Android设备上来运行Spinner的示例程序,运行环境为Motorola Defy+ 2.3.7 MIUI,所得到的具体显示效果为:
可以看出,这和我们在模拟器中的显示效果略有不同,那么就是手机所刷ROM对我们组件显示风格的影响了,也就是说,在不同的ROM下,会有不同的显示效果。
本部分代码请参考附件。
接下文
- SpinnerDemo.rar (144.2 KB)
- 下载次数: 467
评论
2 楼
tomastong
2014-04-11
楼主,为什么你的运行效果那么赞,用的是哪个版本的?
1 楼
qianguming
2013-09-29
紧紧跟随9,不知道为什么我的那个promote不能显示??
发表评论
-
Objective-C学习笔记12:高级数据类型一
2013-03-03 21:52 5010接上文 之前介绍过变量和数据类型,那么我们来看 ... -
Objective-C学习笔记11:多态和动态类型
2013-03-03 11:20 8843接上文 多态是一个典型的面向对象概念。Obje ... -
Objective-C学习笔记十:继承二
2013-03-02 21:27 4736接上文 之前 ... -
Objective-C学习笔记九:继承一
2013-01-12 20:32 14962接上文 继承是面向对象的一个核心概念。在Obj ... -
Objective-C学习笔记八:类的定义二
2013-01-06 11:00 5286接上文 我们继续来扩展分数类Fraction, ... -
Android学习笔记17:中级视图组件DatePicker和TimePicker
2013-01-05 12:08 16179接上文 HTML5出现之前,我们在Wweb开发 ... -
Objective-C学习笔记七:类的定义一
2013-01-05 10:53 8632接上文 我们还是结合之前分数的示例来说明,只是 ... -
Objective-C学习笔记六:选择结构二
2013-01-03 20:24 5535接上文 之前介绍的都是独立的if选择结构,其实 ... -
Objective-C学习笔记五:选择结构一
2013-01-02 21:37 5688接上文 选择结构,或者称为分支结构,是编程语言 ... -
Android学习笔记16:布局管理器的嵌套
2012-12-31 12:29 9663接上文 布局管理器的嵌套就是将多种布局管理器混 ... -
Objective-C学习笔记四:循环结构
2012-12-31 11:07 8605接上文 ... -
Android学习笔记15:绝对布局管理器AbsoluteLayout
2012-12-29 12:13 11440接上文 有相对布局管理器,对应的,我们还有绝对 ... -
Objective-C学习笔记三:基本数据类型和表达式
2012-12-29 12:06 10128接上文 任何编程语言都会有数据类型,比如在Ja ... -
Objective-C学习笔记二:面向对象概述
2012-12-29 11:49 7118接上文 从字面来理解Objective-C就是 ... -
Android学习笔记14:相对布局管理器RelativeLayout
2012-12-28 13:25 14704接上文 相对 ... -
Objective-C学习笔记一:第一个应用程序
2012-12-27 12:17 14357iOS程序是基于Object ... -
Android学习笔记13:表格布局管理器TableLayout
2012-12-27 11:54 18976接上文 在Web开发中,我们会接触到形形色色的 ... -
Android学习笔记12:框架布局管理器FrameLayout
2012-10-10 10:09 19882接上文 框架布局管理器是Android布局管理 ... -
Android学习笔记11:线性布局管理器LinearLayout
2012-10-02 13:51 15777接上文 和Java GUI部分的概念类似,布局 ... -
Android学习笔记十:基本视图组件:ImageView和ImageButton
2012-09-08 14:05 21546接上文 在Web ...
相关推荐
Android学习笔记(十二):Activity-Spinner
Android spinner 案例Android spinner 案例Android spinner 案例
Android中常见的弹框:Spinner、Dialog、PopupMenu、PopupWindow等控件基本使用总结
Android Spinner实现图片列表;通常的Spinner只能展示文字列表,此demo实现了Spinner展示图片列表。 支持sdk2.2及以上版本。
Android 自定义Spinner样式的 选择框背景,选择框文字属性,弹出框文字属性
对于android项目开发来说,常常会用到Spinner实现下拉框的效果。而对于Spinner加载适配器的方法有多种: 1.直接加载android自带的ArrayAdapter,SimpleAdapter; 2.自定义继承BaseAdapter的适配器。 对于适配器加载...
自学 Android 做的第七个 Android 程序,使用了 Spinner
android 带图标的spinner控件示例源码
功能:可以设置默认值,下拉选框自定义,显示框自定义 这是一个自定义控件使用非常简单,复制粘贴到项目可直接使用,可高度自定义
本文实例讲述了Android编程开发之Spinner组件用法。分享给大家供大家参考,具体如下: Spinner组件组要用显示一个下拉列表,在使用中需要用到适配器Adapter,下面是一个该组件的使用示例 首先是布局文件main.xml: ...
Android UI_常用组件之 Spinner与适配器模式
android spinner的简单代码 只有几行
Android 自定义Spinner的Demo(开发工具:Android Studio)
利用android中的spinner控件 实现了全国省市三级联动
Xamarin.Android Spinner的简单示例。包括用法,载入等。
android spinner的前面设置图标android spinner的前面设置图标android spinner的前面设置图标android spinner的前面设置图标android spinner的前面设置图标
简单的设置spinner默认的标题 例如“请选择”等等
android studio,demo,Spinner下拉菜单多选的实现,android studio3.0.1的环境下使用。
Android组件的组件Spinner Spinner的简介及简单使用代码 为初学者提供 明了的框架