通常情况下,如果列表选择框中要显示的列表项是可知的,那么可以将其保存在数组资源文件中,然后通过数组资源来为列表选择框指定列表项。这样就可以在不编写Java代码的情况下实现一个下拉选择框。

1.在布局文件中添加一个<spinner>标记,并为其指定android:entries属性,具体代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<Spinner android:entries="@array/ctype"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spinner"/>
</LinearLayout>

其中android:entries属性是用来指定列表项的,如果在布局文件中不指定该属性,可以在Java代码中通过为其指定适配器的方式指定;

2.编写用于指定列表项的数组资源文件,并将其保存在res\values目录中,这里将其命名为arrays.xml,在该文件中添加一个字符串数组,名称为ctype,具体代码如下

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string-array name="ctype">
<item>ID</item>
<item>Student Card</item>
<item>Army Card</item>
<item>Work Card</item>
<item>Other</item>
</string-array>
</resources>

在屏幕上添加列表选择框后,可以使用列表选择框的getSelectedItem()方法获取列表选择框的选中值,可以使用下面的代码:

Spinner spinner=(Spinner)findViewById(R.id.spinner);
spinner.getSelectedItem();

如果想要在用户选择不同的列表项后,执行相应的处理,则可以为该列表选择框添加OnItemSelectedListener事件监听器。例如,为spinner添加选择列表事件监听器,并在onItemSelected()方法中获取选择项的值输出到日志中,可以使用如下代码:

package com.basillee.blogdemo;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Spinner; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner spinner=(Spinner)findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override
public void onItemSelected(AdapterView<?> parent, View arg1,
int pos, long id) {
// TODO Auto-generated method stub
String result=parent.getItemAtPosition(pos).toString();//获取选择项的值
Log.i("spinner", result);
} @Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub }
}); } }

下面介绍通过指定适配器的方式指定列表的方式指定列表项的方法。

(1)创建一个适配器对象,通常使用ArrayAdapter类。在Android中,创建适配器通常可以使用以下两种方法:一种是通过数组资源文件创建;另一种是通过java里面的字符串数组创建。

  • 通过数组资源文件创建适配器,需要使用ArrayAdapter类的createFromResource()方法,具体代码如下:
ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this,R.array.ctype,android.R.layout.simple_dropdown_item_1line);
  • 通过Java代码创建如下
	String[]ctype=new String[]{"ID","Student Card","Army Card"};
     ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,ctype);

(2)为适配器设置下拉列表的选项样式:

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

(3)将适配器与选择列表框关联:

spinner.setAdapter(adapter);

最新文章

  1. Joshua Bloch错了? ——适当改变你的Builder模式实现
  2. MySQL--InnoDB索引原理详解
  3. 【记录】ASP.NET MVC AuthorizeAttribute OnAuthorization 验证跳转
  4. Ubuntu 下安装Mysql 需要注意的地方.
  5. AutoMapper的简单使用
  6. Asp.net Core中使用NLog,并封装成公共的日志方法
  7. css3基础教程十三征服CSS3选择器
  8. Android利用百度地图定位
  9. SRM 601 DIV1
  10. block(三)揭开神秘面纱(上)
  11. ZOJ3629 Treasure Hunt IV(找到规律,按公式)
  12. iOS 开发 atomic 与 nonatomic 区别
  13. MySQL慢查询&amp;执行计划
  14. 这段代码,c 1秒,java 9秒,c# 14秒,而python。。。
  15. 一、使用Navicat连接阿里云服务器宝塔面板里创建的数据库
  16. hdu 4486 Pen Counts
  17. 自学Linux Shell16.1-函数概念
  18. 利用apache伪静态技术防止盗链
  19. python-day81--Ajax
  20. Git中使用amend解决提交冲突

热门文章

  1. [读书笔记]了不起的node.js(二)
  2. INTERIGHT 京东自营旗舰店-京东 要把凡客给弄残啊这是。。
  3. Camtasia Studio的安装步骤
  4. 使用list和tuple
  5. 设置 ubuntu ftp
  6. 针对 .NET 框架的安全编码指南
  7. spring读书笔记----Quartz Trigger JobStore出错解决
  8. cocos2d-x Touch
  9. -join 和 -split 用法
  10. Swipe2.1更新——移动Web内容滑块