Android Spinner列表选择框

Spinner

Spinner是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源。

1、直接设置数组源

 在res/values/strings.xml中设置数组源

1 <string-array name="selector">
2         <item >学生证</item>
3         <item >结婚证</item>
4         <item >军官证</item>
5         <item >党员证</item>
6     </string-array>

然后在MainActivity找到spinner,然后设置默认选择项

 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.widget.Spinner;
 4
 5 public class MainActivity extends Activity {
 6     /**
 7      * Spinner列表选择框
 8      * 是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源
 9      */
10     @Override
11     protected void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setContentView(R.layout.activity_main);
14
15         Spinner spinner = (Spinner) findViewById(R.id.spinner);
16
17         spinner.setSelection(2, true);//从0开始
18     }
19
20
21 }

这里的setSelection(int position, boolean animate)和setSelection(int position) 实现机制有较大区别,当调用前者时重新layout,立即触发onItemSelected函数,作用相当于用手直接点击。而后者设置了下次选择位置:setNextSelectedPositionInt(position); 然后请求Layout;,而requestLayout并非立即执行,仅仅是一个schedule。但是后者可能在重新装载数据然后Layout时丢失了某些状态。

运行效果如图

2、使用适配器,并设置监听

public class MainActivity extends Activity {
    /**
     * Spinner列表选择框
     * 是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源
     */

    //数据源
    String[] data = {"妈妈","爸爸","爷爷","奶奶","外公","外婆"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

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

        //直接使用数组源
        //spinner.setSelection(2,true);

        //使用适配器
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data);
        spinner.setAdapter(adapter);

        //下拉列表选择框,设置监听
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                //直接数组源
                //String name = getResources().getStringArray(R.array.selector)[position];
                //Toast.makeText(getBaseContext(), name, Toast.LENGTH_SHORT).show();

                //适配器的时候
                String name = data[position];
                //实质上如果是MainActivity.this也可以,但是如果改成this,会报错。因为这个用了匿名内部类
                Toast.makeText(getBaseContext(), name, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                //当没有任何选择时调用从没触发过
                Log.e("TAG", "从没触发过");
            }
        });
    }

}

运行效果如图:

时间: 2024-10-30 21:12:59

Android Spinner列表选择框的相关文章

Android 自学之列表选择框Spinner

列表选择框(Spinner)与Swing编程里面的Spinner不同,这里的Spinner其实就是一个列表选项框. Spinner是ViewGroup的间接子类,因此他也可作为容器使用. Spinner支持的常用XML属性和说明: XML属性 说明 android:prompt 设置该列表框的提示 android:entries 使用数组资源设置该下拉列表框的列表项目 啥都不说了我们看看代码: layout/main.xml 1 <?xml version="1.0" encod

Android开发系列(二十一):Spinner的功能和用法以及实现列表选择框

Spinner是一个列表选择框,相当于弹出一个菜单供用户进行选择. Spinner继承AdapterView Spinnet支持的XML的属性: android:entries:使用数组资源设置该下拉列表框的列表项目 android:popupBackground:设置下拉列表框的背景色 (一般这两个比较常用一点) 用Spinner用两种方法: 第一.已经确定下拉列表里的列表项,只要为Spinner指定android:entries属性就可以实现Spinner. 第二.如果程序需要在运行时动态地

Android——列表选择框(Spinner)

通常情况下,如果列表选择框中要显示的列表项是可知的,那么可以将其保存在数组资源文件中,然后通过数组资源来为列表选择框指定列表项.这样就可以在不编写Java代码的情况下实现一个下拉选择框. 1.在布局文件中添加一个<spinner>标记,并为其指定android:entries属性,具体代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q

Android开发系列(二十一):Spinner的功能和使用方法以及实现列表选择框

Spinner是一个列表选择框.相当于弹出一个菜单供用户进行选择. Spinner继承AdapterView Spinnet支持的XML的属性: android:entries:使用数组资源设置该下拉列表框的列表项目 android:popupBackground:设置下拉列表框的背景色 (一般这两个比較经常使用一点) 用Spinner用两种方法: 第一.已经确定下拉列表里的列表项,仅仅要为Spinner指定android:entries属性就能够实现Spinner. 第二.假设程序须要在执行时

安卓组件------列表选择框

安卓提供的列表选择框(Spinner)相当于web端用户注册时的选择下拉框,比如注册候选择省份城市等.如下图便是一个列表选择框 下拉列表的列表选择项能够通过xml文件的android:entries属性指定,或是在java代码中导入,属性android:prompt是列表项的标题. 一    列表项数据:       实际运用当中,很多下拉列表项的数据实际是可知的,可以放在xml资源文件中.这时,开发者可以通过xml属性进行指定数据. 除了资源文件之外,开发者还能够使用适配器适配数据源.(适配器

AxureRP7.0基础教程系列 部件详解 List Box 列表选择框

原型库网站-讲师金乌原创发布,可自由转载,请注明出处! Axure中文官网:www.AxureRP.cn   <AxureRP7.0部件详解> List Box 列表选择框 常用案例 替代下拉列表 如果你想让用户查看所有选项而不需要点击选择的话,就使用列表选择框替代下拉列表. 多选 与下拉列表不同的是,列表选择框允许用户对选项进行多选. 编辑列表选择框 编辑列表选择框 项目的添加.删除.排序和批量添加操作,和下拉列表框都是一样的.唯一不同的是,列表选择框可以设置为允许多项选择. 列表选择框案例

列表选择框:wxSingleChoiceDialog

wxSingleChoiceDialog(wxWindow* parent, const wxString& message, const wxString& caption, int n, const wxString* choices, void** clientData = NULL, long style = wxCHOICEDLG_STYLE, const wxPoint& pos = wxDefaultPosition) 支持的方法如下: wxSingleChoiceD

android:Spinner(下拉框)控件的使用

1.效果图 2.创建页面文件(main.xml) 1 <Spinner 2 android:id="@+id/spinner1" 3 android:layout_width="match_parent" 4 android:layout_height="wrap_content" /> 5 6 <TextView 7 android:id="@+id/tvResult" 8 android:layout_w

【JavaEE企业应用实战学习记录】optiontransferselect实现两个列表选择框

1 <%@ page contentType="text/html; charset=GBK" language="java"%> 2 <%@taglib prefix="s" uri="/struts-tags"%> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="te