Hello Views之Spinner(yaozq翻译,仅供参考)

简介: Spinner是一种类似于下拉列表的widget。在这个教程中,你将创建一个简单的用于展示星球列表的spinner组件。

Spinner是一种类似于下拉列表的widget

在这个教程中,你将创建一个简单的用于展示星球列表的spinner组件。当选择列表中的一项时,将会弹出一个表示所选项的toast信息。下面是具体步骤:

1,新建一个名为HelloSpinner的项目。

2,打开res/layout/main.xml文件,并将下面的内容插入进去:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  	  android:orientation="vertical"
  	  android:padding="10dip"
  	  android:layout_width="fill_parent"
  	  android:layout_height="wrap_content">
  <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
   	     	android:layout_marginTop="10dip"
   	     	android:text="@string/planet_prompt"
   	 	 />
  	  <Spinner 
    	    android:id="@+id/spinner"
        	android:layout_width="fill_parent"
        	android:layout_height="wrap_content"
        	android:prompt="@string/planet_prompt"
    	/>
</LinearLayout>
有一点要注意的是TextView android:text 属性和 Spinner android:prompt 属性都引用了相同的字符串资源。这个字符串是被用来做 spinner 的标题的。当应用于 Spinner 的时候,这个字符串文本将出现在现则列表的的最上部。

3,在res/values目录下创建一个stings.xml文件,并按如下方式编辑:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="planet_prompt">Choose a planet</string>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
<item>Jupiter</item>
<item>Saturn</item>
<item>Uranus</item>
<item>Neptune</item>
<string-array>
</resources>

<string> 源于定义了前面 TextView Spinner 都引用的标题字符串。 <string-array> 元素定义了将要在 Spinner 中列出的字符串列表。

4,打开HelloSpinner.java文件,并将下面的代码插入到onCreate()方法中:

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

    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    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);
}
在设置 main.xml 文件作为 content view 之后,又通过 findViewById(int) 找到 Spinner 组件。然后 createFromResource() 方法创建了一个新的 ArrayAdapter ,这个 ArrayAdapter 将用于初始 Spinner 列表的字符串数组中的每一个 item 绑定上。 R.array.planets_array ID 引用了在上面定义的 string_array ,而 android.R.layout.simple_spinner_item 这个 ID 则引用了由系统定义的一个标准 spinner 样式( appearance )。然后调用 setDropDownViewResource(int) 来定义当 spinner 被打开的时候每一个 item appearance simple_spinner_dropdown_item 是系统定义另一个标准布局)。最后通过调用 setAdapter(T) ArrayAdapter 和它所有的 item 就关联在一起了。

5,通过实现AdapterView.OnItemSelectedListener创建一个内部类。当Spinner中的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.
 }
}
这个AdapterView.OnItemSelectedListerer 需要 onItemSelected() onNothingSelected() 回调方法。前面那个回调方法将在 AdapterView 中的 item 被选择的时候调用,这时,一个 Toast 信息将会被弹出,后面的回调方法会在 when a selection disappears from the AdapterView 时被调用,这个例子中不考虑。

6,然后将这个MyOnItemSelectedListener应用到Spinner,方法是在onCreate()方法中添加如下代码:

spinner.setOnItemSelectedListerner(new MyOnItemSelectedListener() );
这样就创建了一个 MyOnItemSelectedListener 匿名内部类,并被设为 Spinner 的监听器。

7,运行程序。得到如下结果:

 
  
 
  
 
  
 
  
 
  
 
  
 
 
相关文章
|
Web App开发 编解码 Ubuntu
YouTube下载视频教程:常用的网站软件插件APP都有涉及
有时候可能需要YouTube上的视频来进行一些操作,比如教程演示,语言学习,视频编辑等.....那么YouTube视频怎么下载下来呢?方法比较多。在这篇文章里我会给大家介绍一些下载YouTube视频的常用网站、浏览器插件、电脑软件和手机APP,方便大家找到最合适的方法去保存油管视频。
2763 1
YouTube下载视频教程:常用的网站软件插件APP都有涉及
|
JavaScript IDE 开发工具
WebStorm - 关闭 ESLint 检测
WebStorm - 关闭 ESLint 检测
1508 0
WebStorm - 关闭 ESLint 检测
|
SQL 存储 关系型数据库
nacos安装教程
nacos安装教程
916 0
nacos安装教程
|
5月前
|
存储 缓存 关系型数据库
MySQL为什么需要主键
本文介绍了MySQL中主键的重要性及最佳实践。主键用于唯一标识表中的每一行,其值必须唯一且不允许为空。主键有助于简化更新和删除操作,避免影响无关行。推荐使用与业务无关的自增ID作为Innodb表的主键,以优化存储结构、减少碎片并提高性能。此外,文章还提到不更新、不重用主键值以及避免使用可能变更的字段(如邮箱)作为主键的良好习惯。最后强调了紧凑索引结构对查询效率的关键作用。
161 0
MySQL为什么需要主键
|
机器学习/深度学习 人工智能 算法
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
乐器识别系统。使用Python为主要编程语言,基于人工智能框架库TensorFlow搭建ResNet50卷积神经网络算法,通过对30种乐器('迪吉里杜管', '铃鼓', '木琴', '手风琴', '阿尔卑斯号角', '风笛', '班卓琴', '邦戈鼓', '卡萨巴', '响板', '单簧管', '古钢琴', '手风琴(六角形)', '鼓', '扬琴', '长笛', '刮瓜', '吉他', '口琴', '竖琴', '沙槌', '陶笛', '钢琴', '萨克斯管', '锡塔尔琴', '钢鼓', '长号', '小号', '大号', '小提琴')的图像数据集进行训练,得到一个训练精度较高的模型,并将其
287 0
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
|
11月前
|
弹性计算 负载均衡 安全
阿里云国际版源站IP暴露的解决办法
阿里云国际版源站IP暴露的解决办法
|
人工智能 Rust JavaScript
Github 2024-06-01开源项目月报 Top20
根据Github Trendings统计,2024年6月共有20个项目上榜。按开发语言分类,项目数量如下:Python和TypeScript项目各有8项,Jupyter Notebook 3项,HTML、Java、Rust、Vue 和 Batchfile 各1项,C和Svelte也分别有1项。这些项目涵盖多种领域,从AI驱动的应用到游戏开发,反映了开源社区的多样性和创新力。
378 0
|
安全 关系型数据库 MySQL
DVWA
【7月更文挑战第11天】
221 0
|
存储 C语言
C语言栈的表达式求值讲解
C语言栈的表达式求值讲解
229 0
|
数据安全/隐私保护 Windows
Windows Server 2003 搭建邮件服务器实现自建邮箱域名及账户并连接外网
Windows Server 2003 搭建邮件服务器实现自建邮箱域名及账户并连接外网