前言

本文根据官方教程适当翻译而来。(源码下载)

1.新建工程HelloSpinner

2.在main.xml里面添加一个spinner,设置Android:promt属性,这是一个提示属性,同时为默认的textview修改Android:text属性,它们将引用同一个string文本,如何理解呢,看了下面的图应该有所意会了。实现的效果是下图中红圈内的文字提示:

局部的main.xml如下:

<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/planet_prompt" />

<Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:prompt="@string/planet_prompt"/>

3.在onCreate()里面添加操作spinner的代码:

@Override public void onCreate(Bundle savedInstanceState)     { super.onCreate(savedInstanceState);         setContentView(R.layout.main);

        Spinner spinner = (Spinner) findViewById(R.id.spinner1);         ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,                 R.array.planets_array, android.R.layout.simple_spinner_item);         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);         spinner.setAdapter(adapter);         spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());     }

4.

解释一下上面的两句ArrayAdapter.createFromResource(this,R.array.planets_array, android.R.layout.simple_spinner_item);和adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);关于前者它的函数原型如下

public static ArrayAdapter<CharSequence> createFromResource(Context context, int textArrayResId, int textViewResId)

参数:

context 应用的上下文

textArrayResId 数据源数组标识
textViewResId 用于显示的布局view

返回值:ArrayAdapter<CharSequence>

结合本例, R.array.planets_array 标识了我们要用到的字符串数组.R.layout.simple_spinner_item 标识了系统定义的一个标准的Spinner的布局外观。

而后者adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);定义的是spinner的每一个item的布局外观。

5.为了响应用户选择下拉框中某一项的事件,还要添加一个OnItemSelectedListener监听,具体实现是,新建一个MyOnItemSelectedListener 类继承OnItemSelectedListener类,在其中重写两个方法onItemSelected(),onNothingSelected(),它们分别处理item被选中和没选的事件:

public class MyOnItemSelectedListener implements OnItemSelectedListener     {

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)         {             Toast.makeText(parent.getContext(),                     "The planet is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG)                     .show();         }

public void onNothingSelected(AdapterView parent)         { // Do nothing.         }     }

5.OK,运行。(源码下载)

转载于:https://www.cnblogs.com/avenwu/archive/2012/02/21/2359525.html

Hello,Views(六)下拉框Spinner(附源码)相关推荐

  1. [安卓开发] 下拉框Spinner与适配器ArrayAdapter/SimpleAdapter的使用

    目录 简单介绍Spinner和Adapter ArrayAdapter实现以对话框形式展示下拉框(纯文字) Simple实现以对话框形式展示下拉框(图片加文字) 简单介绍Spinner和Adapter ...

  2. 下拉框Spinner

    xml: <!-- 下拉框 --> <Spinner  android:layout_width="match_parent" android:layout_he ...

  3. php 类似微信下拉菜单,微信小程序实现下拉框(附代码)

    微信小程序里没有和HTML里的下拉框一样的组件,想要相同的效果只能自己写一个,先看效果 下面来看一下代码: 首先WXML {{selectData[index]}} {{item}} 然后WXSS(如 ...

  4. addoption php,无忧建站-ajax+php无刷新二级联动下拉菜单(省市联动)源码

    /** * ajax无刷新二级联动下拉菜单(省市联动) * * @author      arcow * @version     1.0 * @lastupdate  2005-12-29 * */ ...

  5. Android SwipeRefreshLayout下拉刷新控件源码简单分析

    咱们在做Android APP开发的时候经常碰到有下拉刷新和上拉加载跟多的需求,这篇文章咱们先说说下来刷新,咱们就以google的原生的下拉刷新控件SwipeRefreshLayout来看看大概的实现 ...

  6. HTML百度搜索框实现(附源码带注释)

    1.百度类效果 源码: <!DOCTYPE html> <html lang="en"> <head><meta charset=&quo ...

  7. Android 之 下拉框(Spinner)的使用

    下拉列表 Spinner. Spinner的使用,可以极大提高用户的体验性.当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来.供用户选择. Demo如下,可以留作参考  一.使用数组作为 ...

  8. android下拉框 Spinner 获取选中,设置选中

    设置默认选中: public static int ugid = 1; public void setSpinnerItemSelectedByValue(Spinner spinner,String ...

  9. MFC Windows 程序设计[五十六]之开启子对话框(附源码)

    MFC Windows 程序设计[五十六]之开启子对话框 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries), ...

最新文章

  1. Outlook新邮件要双击打开后才显示为已读
  2. MySQL主从介绍、准备工作、配置主、配置从、测试主从同步、断电后恢复主从...
  3. C#中的方法(上):
  4. 共享内存 传一个类指针_C++指针
  5. Python 网络爬虫笔记1 -- Requests库
  6. vue 时间插件_Vue3 插件开发详解尝鲜版「值得收藏」
  7. C语言结构体指针的使用方法
  8. Rust从入门到放弃(1)—— hello,world
  9. oracle复合字段,复合索引 选择频繁的字段,还是选择选择性低的字段 放在前面?...
  10. apache 配置php 版本错误u,PHP+Apache+MySQL 在配置环境时遇到的问题
  11. 第一代90后IT毕业生调查:不想做IT民工,想做马云
  12. 关于CSS一些细节问题
  13. eclipse新建java项目_用eclipse创建Java项目(以一个初学者的角度全面教学)
  14. 【VRP】基于matlab遗传算法求解出租车网约车接送客车辆路径规划问题【含Matlab源码 YC003期】
  15. 【数学建模之Python】13.手撕抛物型方程的差分解法(如一维热传导方程)
  16. excel 将科学计数法的格式换成文本
  17. [Python3学习笔记-入门到入魔系列] 5分钟彻底搞懂XML文档解析
  18. Android学习笔记---集成百度语音合成的坑与坑
  19. LeTeX的下载与安装
  20. UE5 Gameplay 框架拆解

热门文章

  1. 使用Timer执行定时任务
  2. 什么是OAuth 2.0
  3. Elasticsearch 索引数据多了怎么办,如何调优,部署?
  4. 详细描述一下 Elasticsearch 搜索的过程?
  5. Elasticsearch性能监控(二)
  6. 图像处理论坛_【活动】CSIG菁英青云论坛第三期活动预告!!
  7. 如何使用Docker部署Go Web应用
  8. Docker系列三~docker安装nginx
  9. 项目添加universal link跳转,升级微信SDK
  10. android 软键盘 状态,Android监听软键盘状态