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("您没有选择");
}
});
---恢复内容结束---
- Apache Spark 2.0预览:机器学习模型持久性
- 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler
- 携程Android App的插件化和动态加载框架
- Spring Boot构建RESTful API与单元测试
- Volley解析之表单提交篇
- JAVA中重写equals()方法的同时要重写hashcode()方法
- 调用CodeSmith类库实现代码生成(含源码)
- 1分钟生成Net对象的注释
- Android Studio之gradle的配置与介绍
- MLlib中的随机森林和提升方法
- android JNI调用机制
- Android开发小窍门通过泛型简化findViewById类型转换
- lodash源码分析之缓存使用方式的进一步封装
- Android LruCache技术原理
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- LeetCode题目23:合并K个排序链表
- LeetCode题目24:两两交换链表中的节点
- 最难链表题——LeetCode题目25:K 个一组翻转链表
- LeetCode题目26:删除排序数组中的重复项
- PCA算法原理及实现
- LeetCode题目27:移出元素
- LeetCode题目28:实现strStr()
- LeetCode题目29:两数相除
- LeetCode题目30:串联所有单词的子串
- LeetCode题目31:下一个排列
- LeetCode题目33:搜索旋转排序数组
- LeetCode题目34:在排序数组中查找元素的第一个和最后一个位置
- LeetCode题目35:搜索插入位置
- LeetCode题目36:有效的数独
- 你必须掌握动态规划——LeetCode题目5:最长回文子串