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

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,运行程序。得到如下结果:

wps_clip_image-32697

转载于:https://www.cnblogs.com/yaozq/archive/2012/03/01/2375057.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

error PRJ0003 : 生成“cl.exe”时出错 解决方案

本人已经安装了VS2010&#xff0c;但是同事给的项目是用VC2008写的&#xff0c;用到几个lib文件&#xff0c;路径也都正确&#xff0c;但就是无法正确解析&#xff0c;所以我怀疑是lib库生成的环境问题。所以考虑装个VC2008。但是我又不敢直接安装VS2008&#xff0c;怕破坏VS20…

[react] 简要描述下你知道的react工作原理是什么?

[react] 简要描述下你知道的react工作原理是什么&#xff1f; 我理解的核心部分&#xff1a; 通过虚拟DOM表达真实DOM通过数据驱动更新虚拟DOM进而更新真实DOM&#xff08;MVVM&#xff09;有一套完整并且合理的 DOM Diff 算法&#xff08;现在 React 17 是基于 lane 架构来调…

Bitmap 之 getPixels() 的 stride

学习Graphics中遇到位图(Bitmap)中getPixels()方法&#xff0c;对该方法的用法大体理解&#xff0c;但对其中的stride参数却不明白具体的用法以及用意&#xff0c;现记述过程如下&#xff1a; getPixels()方法的用处为获取位图(Bitmap)中的像素值(颜色值)&#xff0c;存入类型为…

i++ 和 ++i 效率的分析以及自定义类型的自增/自减运算符重载实例

From: http://blog.csdn.net/leo115/article/details/8101541 我们通常在写for循环 的时候&#xff0c;要实现变量 i 的自增 1 &#xff1b;往往会在i 和i中随便挑一种写&#xff0c;对于i和i的理解&#xff0c;我们往往停留在返回的值的不同&#xff0c;其实i与i在实现效率上…

day②:字典的fromkeys方法

start##fromkeys方法本身就是把所有的key都指向同一个对象了>>> cdict.fromkeys(range(5),[]) >>> c{0: [], 1: [], 2: [], 3: [], 4: []}>>> c[0].append({"B":{123}})>>> c{0: [{B: set([123])}], 1: [{B: se…

[react-router] React-Router的实现原理是什么?

[react-router] React-Router的实现原理是什么&#xff1f; 1.react-router依赖基础 - history&#xff0c;是一个独立的第三方js库&#xff0c;可以用来兼容在不同浏览器、不同环境下对历史记录的管理&#xff0c;拥有统一的API。具体来说里面的history分为三类: HashRouter…

Linux Bash Shell入门教程

BASH 的基本语法 最简单的例子 —— Hello World! 关于输入、输出和错误输出 BASH 中对变量的规定&#xff08;与 C 语言的异同&#xff09; BASH 中的基本流程控制语法 函数的使用 2.1 最简单的例子 —— Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是…

[react] 请描述下事件在react中的处理方式是什么?

[react] 请描述下事件在react中的处理方式是什么&#xff1f; 所有时间都挂载到 document 上&#xff0c;然后捕获对应的 dom。 类似事件委托 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录…

BZOJ 1146: [CTSC2008]网络管理Network( 树链剖分 + 树状数组套主席树 )

树链剖分完就成了一道主席树裸题了, 每次树链剖分找出相应区间然后用BIT(可持久化)权值线段树就可以完成计数. 但是空间问题很严重....在修改时不必要的就不要新建, 直接修改原来的..详见代码. 时间复杂度O(N*log^3(N))------------------------------------------------------…

标准RTSP 消息的错误代码

From: http://blog.csdn.net/ameyume/article/details/7441060 标准RTSP消息的错误代码–在应答消息的第一行表示 ”100” ; Continue (all 100 range) “110”; Connect Timeout “200” ; OK ”201” ; Created ”250” ; Low on Storage Space ”300” ; Multiple Choic…

[react-router] React-Router怎么设置重定向?

[react-router] React-Router怎么设置重定向&#xff1f; 采用 Redirect 进行重定向 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

struts2遍历select

2019独角兽企业重金招聘Python工程师标准>>> <s:bean name"org.apache.struts2.util.Counter" id"counter"> <s:param name"first" value"1" /> <s:param name"last" value"pageCount"…

[建议]我对软工有话说(上)

我对软工有话说 经历了一学期的软件工程课程实践&#xff0c;先给个自己在这门课中学到的东西打个分&#xff1a; 编码能力&#xff1a;★★★代码质量&#xff1a;★★★★团队管理&#xff1a;★★★★★风险控制&#xff1a;★★★★解决问题的能力&#xff1a;★★★★★下…

[react-router] React-Router的路由有几种模式?

[react-router] React-Router的路由有几种模式&#xff1f; 1、BrowserRouter&#xff1a;浏览器的路由方式&#xff0c;也就是在开发中最常使用的路由方式 2、HashRouter&#xff1a;在路径前加入#号成为一个哈希值&#xff0c;Hash模式的好处是&#xff0c;再也不会因为我们…

Spring MVC X-Frame-Options

https://docs.spring.io/spring-security/site/docs/current/reference/html/headers.html#headers-frame-options 转载于:https://www.cnblogs.com/heshuai/p/5132141.html

[react] react组件间的通信有哪些?

[react] react组件间的通信有哪些&#xff1f; PropsContextref&#xff1a;通过Ref获取组建的实例&#xff0c;在通过实例拿到组件的属性值或者方法的回调 第三方的&#xff0c;Redux是基于Conext基础上的库&#xff0c;Mobx这是依赖收集&#xff0c;EventBus是发布订阅模式&…

Fedora开机自动登录指定用户(root或普通用户)

From: http://www.360doc.com/content/12/0709/11/6828497_223143657.shtml 2010-07-19 12:53:04| 分类&#xff1a;Linux学习 | 标签&#xff1a;|字号大中小 订阅 自从Fedora 10开始&#xff0c;以后版本默认均无法在GUI下界面以root账号登录。其实这个设计是比较好的&…

android中心类库

android开发过程中总会用到各种各样的类库&#xff0c;也即jar包&#xff0c;以下地址可以满足您的需求 地址&#xff1a;http://search.maven.org/转载于:https://www.cnblogs.com/kangweifeng/p/5133233.html

[react-router] 在history模式中push和replace有什么区别?

[react-router] 在history模式中push和replace有什么区别&#xff1f; push()&#xff1a;添加一个新的记录到历史堆栈, history.length1。&#xff08;一般会用来跳转到一个新页面, 用户点击浏览器的回退按钮可以回到之前的路径。&#xff09; replace()&#xff1a;替换掉当…

Web安全开发注意事项

1.sql注入&#xff1a;这个很常规了&#xff0c;不要拼字符串以及过滤关键字都可以防住&#xff0c;需要注意的是&#xff0c;Cookie提交的参数也是可以导致注入漏洞的。 2.旁注&#xff1a;就是说在保证自己的程序没问题的同时&#xff0c;也要保证同台服务器的其他站点没问题…