`

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
android.widget.Spinner继承了android.view.ViewGroup类。下面安排一个案例如图6-5,有两个Spinner,颜色选择Spinner和星座选择Spinner。点击颜色选择Spinner右边的 按钮,如图6-6所示,弹出单选对话框。
   


图6-5 Spinner控件                           图6-6 颜色选择Spinner
点击星座选择Spinner右边的 按钮,如图6-7所示,弹出列表对话框。
 


图6-7 星座选择Spinner
程序代码请参考代码清单6-3:
【代码清单6-3】 chapter6_2/src/com/work/SpinnerActivity.java
public class SpinnerActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        final TextView txt2 = (TextView) findViewById(R.id.TextView02);
        Spinner s1 = (Spinner) findViewById(R.id.Spinner01);
        final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.colors, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s1.setAdapter(adapter);
        s1.setOnItemSelectedListener(
                new OnItemSelectedListener() {
                    public void onItemSelected(
                            AdapterView<?> parent, View view, int position, long id) {
                            txt2.setText(adapter.getItem(position).toString());
                    }

                    public void onNothingSelected(AdapterView<?> parent) {
                    	txt2.setText("没选中的");
                    }
                });

        final TextView txt4 = (TextView) findViewById(R.id.TextView04);
        Spinner s2 = (Spinner) findViewById(R.id.Spinner02);
        ArrayAdapter<CharSequence> adapterC = new ArrayAdapter<CharSequence>(this,
                android.R.layout.simple_spinner_item, CONSTELLATIONS);
        adapterC.setDropDownViewResource(android.R.layout.simple_spinner_item);
        s2.setAdapter(adapterC);
        s2.setOnItemSelectedListener(
                new OnItemSelectedListener() {
                    public void onItemSelected(
                            AdapterView<?> parent, View view, int position, long id) {
                    	txt4.setText(CONSTELLATIONS[position]);
                    }

                    public void onNothingSelected(AdapterView<?> parent) {
                    	txt4.setText("没选中的");
                    }
                });
    }
    
    static final String[] CONSTELLATIONS = new String[] {
    	"白羊座", "金牛座", "双子座",
    	"巨蟹座", "狮子座", "处女座",
    	"天枰座", "天蝎座", "射手座", 
    	"魔蝎座", "水瓶座", "双鱼座"
        };
}

第一个颜色选择Spinner数据来源于Values文件夹内的arrays.xml文件,
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="colors">
        <item>红色</item>
        <item>橙色</item>
        <item>黄色</item>
        <item>绿色</item>
        <item>蓝色</item>
        <item>紫色</item>
    </string-array>
</resources>

通过下面的方法从一个资源XML文件中加载数据,创建一个数组类的适配器对象,布局文件是使用系统提供的layout.simple_spinner_item,这里布局文件设置的是Spinner布局样式。
   final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
              this, R.array.colors, android.R.layout.simple_spinner_item);
而弹出的下拉列表的样式是由Spinner的适配器的setDropDownViewResource()方法设置的。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
第二个Spinner用于星座选择,数据是用数组存储的。这两个Spinner的setOnItemSelectedListener()方法的事件处理如下:
s1.setOnItemSelectedListener(
      new OnItemSelectedListener() {
           public void onItemSelected(
                  AdapterView<?> parent, View view, int position, long id) {
                  txt2.setText(adapter.getItem(position).toString());
            }

            public void onNothingSelected(AdapterView<?> parent) {
                  txt2.setText("没选中的");
             }
 });

其中的onItemSelected(AdapterView<?> parent, View view, int position, long id)方法是选中选择项目时触发的,其中的position选择项目的位置,id是选择项目的编号。而什么都不选的方法是onNothingSelected(AdapterView<?> parent)。
                                出自《Android开发案例驱动教程》第六章
  • 大小: 34.7 KB
  • 大小: 22.7 KB
分享到:
评论

相关推荐

    android spinner使用案例

    本篇文章将详细讲解如何在Android应用中使用Spinner,并结合具体的"android spinner使用案例"来深入理解其工作原理和用法。 ### 1. Spinner的基本概念 Spinner是Android SDK中的一个视图组件,属于`android.widget...

    ListView&Spinner;组合控件案例

    让我们深入探讨这两个控件的使用方法以及如何将它们结合到一个案例中。 **ListView** ListView是Android中的一个视图容器,它能够有效地显示一列或多列可滚动的数据。ListView通常与Adapter一起使用,Adapter的...

    Spinner案例

    这个"Spinner案例"提供了关于如何在Android应用中有效使用Spinner的示例代码和实践指导。 在Android开发中,Spinner的使用涉及到以下几个关键知识点: 1. **Spinner的基本结构**:Spinner由两部分组成,一部分是...

    案例九(下拉选择spinner的使用

    在本案例中,我们将深入探讨Spinner的使用方法,包括如何创建、设置数据源、监听用户选择以及自定义样式。 首先,Spinner的创建通常在布局XML文件中完成。在`res/layout`目录下,打开或创建一个XML布局文件,添加...

    Spinner小例子

    下面我们将深入探讨Spinner的基本使用、功能以及如何在实际开发中实现"Spinner选择下拉框小例子"。 1. **Spinner的基本结构** Spinner组件本质上是一个TextView,但它可以展开为一个下拉列表。在XML布局文件中,...

    android listview和spinner实例代码

    在Android开发中,ListView和Spinner是两种非常常用的UI组件,它们在数据展示和用户交互方面起着关键作用...在Sqlite3、Spinner1和View1这些文件中,你可能会找到更具体的示例代码,帮助你进一步掌握这两个组件的使用。

    spinner 下拉选择框

    "spinnerDome"项目可能是开发者分享的一个关于Spinner使用的示例工程,其中可能包含了多种Spinner的使用方法和效果展示,如自定义布局、动态加载数据等。如果你正在寻找Spinner的实践案例,这个项目将是一个很好的...

    Spinner显示城市信息

    总结起来,这个“Spinner显示城市信息”的案例涉及了Android的UI组件使用、数据适配、事件监听以及数据加载策略等多个知识点,是Android开发中常见的功能实现。通过这种方式,我们可以为用户提供直观且交互性强的...

    三级联动 Spinner

    通过以上介绍,我们可以看到“三级联动 Spinner”不仅涉及到Spinner的基本使用,还包括了数据结构设计、事件监听、Adapter的定制以及用户体验的考虑等多个方面,是Android开发中一个实用且复杂的实践案例。

    android spinner

    - 示例代码:可能包含了一个完整的Spinner使用案例,包括布局XML、适配器类和活动类。 - 自定义布局文件:如果Spinner显示的样式特殊,可能会有一个或多个自定义布局文件(`.xml`)用于定制每个列表项的视图。 - ...

    jquery.spinner一款jquery数字智能加减插件

    本文将深入探讨jQuery Spinner的核心概念、使用方法及其实现原理。 一、jQuery Spinner简介 jQuery Spinner是由jQuery UI库提供的一款组件,它提供了一个美观且易用的数字输入框,支持加减操作以及自定义步进值、...

    Spinner二级联动下拉菜单

    对于简单的静态数据,可以使用`ArrayAdapter`,但在这个案例中,因为需要二级联动,我们需要自定义`BaseAdapter`,以便在省份选择变化时更新城市列表。 3. **事件监听**: 使用`OnItemSelectedListener`监听...

    安卓spinner省市区多级联动源码

    为了提高性能,可以使用convertView在Adapter的`getDropDownView()`方法中复用已创建的视图,避免频繁创建新的视图对象。 10. 测试与调试: 对于这样的功能,测试是必不可少的,需要覆盖各种场景,如不同层级数据...

    安卓三级联动省市联动多级联动相关-Androidspinner省市区三级连动源码.rar

    在这个案例中,可能会使用ArrayAdapter来绑定省市区的数据,或者如果数据来自数据库,则可能使用CursorAdapter。 3. **数据结构设计**:为了实现联动效果,我们需要设计合适的数据结构来存储省市区的数据。一种常见...

    自定义Spinner,效果如腾讯QQ输入账号下拉框

    通过以上分析,我们可以看出这个项目是对Android原生Spinner组件进行深度定制的一个实践案例,旨在提供类似腾讯QQ登录界面的用户体验。开发者需要具备扎实的Android基础知识,对Spinner的工作原理有深入理解,并且...

    Android Spinner图文混排源码.rar

    在这个案例中,自定义Adapter需要继承`ArrayAdapter`,并重写`getView()`方法,以便为每个条目设置文本和图片。 4. **getView()方法** 在`getView()`方法中,首先需要获取到ListView项的布局,然后通过`...

    自定义spinnerDemo

    1. **Spinner的基本使用**:Spinner通常由两部分组成:静态显示部分(默认显示一个选项)和动态下拉菜单(展示所有选项)。在Android中,我们可以通过`Spinner`类创建Spinner,并使用`ArrayAdapter`或`CursorAdapter...

    Android Spinner图文混排源码-IT计算机-毕业设计.zip

    1. **Spinner的基本使用**:首先,我们需要理解Spinner的基本用法,包括在XML布局文件中添加Spinner元素,设置适配器(Adapter)以填充数据,以及监听用户的选择事件。 2. **自定义Adapter**:为了实现图文混排,你...

    Android使用Spinner控件实现下拉列表的案例

    (1)两种方法提冲Spinner中的数据源:通过list集合,或者是通过xml文件进行配置 (2)布局代码如下: &lt;RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android xmlns:tools=...

Global site tag (gtag.js) - Google Analytics