Android 控件:使用下拉列表框--Spinner
---恢复内容开始---
一、前段代码
<Spinner
android:id="@+id/spin"
android:paddingTop="10px"
android:layout_width="fill_parent"
android:layout_height="50sp"/> <Button
android:id="@+id/addList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="添加" />
二、接下来新建一个下拉列表的视图资源,即每个Item的TextView,我们把它命名为dropdown.xml,我们把它放到drawable中,代码为:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv1"
android:layout_width="fill_parent"
android:layout_height="20sp"
android:singleLine="true"
style="?android:attr/spinnerDropDownItemStyle"
/>
三、创建Adapter
这里介绍下两个函数:
1.ArrayAdapter.ArrayAdapter(Context context,int textViewResourcId,List<String> objects)
我们可以通过它创建新的Adapter对象,这里需要三个参数:
(1)context上下文关系,就是这个Adapter属于哪个Activity,属于哪个应用程序。
(2)textViewResourcId TextView的资源id
(3) 最后一个参数是你要向下拉列表中添加的数据,可以是一个静态的String数组,也可以是一个动态的List<String>;
2.AdapterView.setOnItemSelectedListener(OnItemSelectedListener listener),使用这个方法为Spinner对象设置监听器。这里参数是OnItemSelectedListener 接口,实现这个接口需要重写两个方法:
(1)public void onItemSelected(AdapterView<?> parent, View view,int position, long id)
这个方法中可以完成当选项被选中时要做的处理。四个参数的含义:
- AdapterView<?> parent,这个类似context,只是范围比较下,指你当前操作的AdapterView
- View view ,这个参数是你具体单击的那个TextView对象
- int position 这个参数的意思是你单击的那个view在整个AdaterView中的位置
- long id 单击view的id
(2)public void onNothingSelected(AdapterView<?> parent)
这个回调函数在AdapterView中没有选项时调用。
完整代码如下:
private Spinner spinner;
private TextView tv;
private ArrayAdapter<String> adapter;
private static final String[] years = { "小于1年", "1年-3年", "3年-5年", "5年以上" };
private ArrayList<String> array = new ArrayList<String>(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
spinner = (Spinner) findViewById(R.id.spin); tv = (TextView) findViewById(R.id.textView1); for (int i = 0; i < years.length; i++) {
array.add(years[i]);
}
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, array);
adapter.setDropDownViewResource(R.drawable.dropdown); spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO 自动生成的方法存根
String seleted = array.get(position);
tv.setText(seleted);
parent.setVisibility(View.VISIBLE);
} @Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO 自动生成的方法存根
tv.setText("您没有选择");
} });
---恢复内容结束---
Android 控件:使用下拉列表框--Spinner的更多相关文章
- Android控件介绍
1. 介绍 Android控件大多位于android.widget, android.view.View为他们的父类对于Dialog系列, android.app.Dialog为父类 Android的 ...
- [Android Pro] android控件ListView顶部或者底部也显示分割线
reference to : http://blog.csdn.net/lovexieyuan520/article/details/50846569 在默认的Android控件ListView在 ...
- Android控件Gridview实现仿支付宝首页,Fragment底部按钮切换和登录圆形头像
此案例主要讲的是Android控件Gridview(九宫格)完美实现仿支付宝首页,包含添加和删除功能:Fragment底部按钮切换的效果,包含四个模块,登录页面圆形头像等,一个小项目的初始布局. 效果 ...
- Android 控件架构及View、ViewGroup的测量
附录:示例代码地址 控件在Android开发的过程中是必不可少的,无论是我们在使用系统控件还是自定义的控件.下面我们将讲解一下Android的控件架构,以及如何实现自定义控件. 1.Android控件 ...
- Android - 控件android:ems属性
Android - 控件android:ems属性http://blog.csdn.net/caroline_wendy/article/details/41684255?utm_source=tui ...
- Android 控件知识点,
一.Android控件具有visibility属性,可以取三个值:visible(默认值)可见,invisible(不可见,但仍然占据原有的位置和大小,可以看做是变得透明了),gone(空间不仅不可见 ...
- UIAutomator定位Android控件的方法
UIAutomator各种控件定位的方法. 1. 背景 使用SDK自带的NotePad应用,尝试去获得在NotesList那个Activity里的Menu Options上面的那个Add note菜单 ...
- 从Android系统出发,分析Android控件构架
从Android系统出发,分析Android控件构架 Android中所有的控件追溯到根源,就是View 和ViewGroup,相信这个大家都知道,但是大家也许会不太清楚它们之间的具体关系是什么,在A ...
- Android控件系列之RadioButton&RadioGroup(转)
学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握Ra ...
- 第三个 android控件
android控件以及控件对应的属性:
随机推荐
- iis部署 .net core webapi
iis部署 .net core webapi 1.修改应用程序池: IIS 发布站点,这里就不介绍 IIS 安装等.这里要修改的是应用程序池,选择“无托管代码”: 2.下载安装.net core托管捆 ...
- pageadmin CMS网站制作教程:模板中的站点数据调用
pageadmin CMS网站建设教程:模板中的站点数据调用 1.获取当前站点Id,返回int数字 Html.CurrentSiteId() 2.获取当前站点url地址,返回string字符串 Htm ...
- 【洛谷4719】 动态dp(树链剖分,dp,矩阵乘法)
前言 其实我只是为了过掉模板而写的ddp,实际应用被吊着锤 Solution 并不想写详细的过程 一句话过程:将子树中轻儿子的贡献挂到这个点上面来 详细版:(引用yyb) 总结一下的话,大致的过程是这 ...
- JQuery - 动态添加Html后,如何使CSS生效,JS代码可用?
今天在开发JQuery Mobile程序时候,需要从服务器取得数据,随后显示在页面上的Listview控件中,数据完整获取到了,也动态添加到Listview控件中,但是数据对应的CSS没有任何效果了, ...
- zoj4019 Schrödinger's Knapsack(dp)
题意:有两种物品分别为n,m个,每种物品对应价值k1,k2.有一个容量为c的背包,每次将一个物品放入背包所获取的价值为k1/k2*放入物品后的剩余体积.求问所获取的最大价值. 整体来看,优先放入体积较 ...
- [Swift实际操作]七、常见概念-(8)日历Calendar和时区TimerZone
本文将为你演示日历的一些属性,以及如何利用日历,查询是否为昨天.今天和明天. 首先引入需要用到的界面工具框架 import UIKit 然后生成一个日历对象,并获得用户当前的日历. var calen ...
- Sql Sever 2012数据库更名失败 error:5030
打开SQL Server 2012数据库时,对HzWind_2MW数据库名修改为HzWind_2MW_GEM,结果出现如图1所示: 图1 数据库更名时出现error:5030 数据库不能重名名5030 ...
- POJ 1298
#include<iostream>// chengdacaizi 注释!2008 11 05 #include<string> using namespace std; in ...
- POJ 1221
#include <iostream> #define MAXN 500 using namespace std; unsigned dp[MAXN][MAXN]; int main() ...
- hadoop1.x异常
可能是存在class冲突 http://stackoverflow.com/questions/25130799/hadoop-java-io-ioexception-call-to-localhos ...