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. }

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

运行效果如图

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

  1. public class MainActivity extends Activity {
  2. /**
  3. * Spinner列表选择框
  4. * 是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以直接设置数组源
  5. */
  6.  
  7. //数据源
  8. String[] data = {"妈妈","爸爸","爷爷","奶奶","外公","外婆"};
  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. //直接使用数组源
  18. //spinner.setSelection(2,true);
  19.  
  20. //使用适配器
  21. ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data);
  22. spinner.setAdapter(adapter);
  23.  
  24. //下拉列表选择框,设置监听
  25. spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
  26.  
  27. @Override
  28. public void onItemSelected(AdapterView<?> parent, View view,
  29. int position, long id) {
  30. //直接数组源
  31. //String name = getResources().getStringArray(R.array.selector)[position];
  32. //Toast.makeText(getBaseContext(), name, Toast.LENGTH_SHORT).show();
  33.  
  34. //适配器的时候
  35. String name = data[position];
  36. //实质上如果是MainActivity.this也可以,但是如果改成this,会报错。因为这个用了匿名内部类
  37. Toast.makeText(getBaseContext(), name, Toast.LENGTH_SHORT).show();
  38. }
  39.  
  40. @Override
  41. public void onNothingSelected(AdapterView<?> parent) {
  42. //当没有任何选择时调用从没触发过
  43. Log.e("TAG", "从没触发过");
  44. }
  45. });
  46. }
  47.  
  48. }

运行效果如图:

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

  1. Spinner列表选择框

    Spinner首先它是一个弹出式的列表选择框,由于间接继承了ViewGroup,所以它可以当做一个容器使用; 如果我们可以明确下拉列表中的列表项, 则可以不需要编写代码, 只需要为spinner指定a ...

  2. Android 自学之列表选择框Spinner

    列表选择框(Spinner)与Swing编程里面的Spinner不同,这里的Spinner其实就是一个列表选项框. Spinner是ViewGroup的间接子类,因此他也可作为容器使用. Spinne ...

  3. Android——列表选择框(Spinner)

    通常情况下,如果列表选择框中要显示的列表项是可知的,那么可以将其保存在数组资源文件中,然后通过数组资源来为列表选择框指定列表项.这样就可以在不编写Java代码的情况下实现一个下拉选择框. 1.在布局文 ...

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

    Spinner是一个列表选择框.相当于弹出一个菜单供用户进行选择. Spinner继承AdapterView Spinnet支持的XML的属性: android:entries:使用数组资源设置该下拉 ...

  5. 列表选择框:wxSingleChoiceDialog

    wxSingleChoiceDialog(wxWindow* parent, const wxString& message, const wxString& caption, int ...

  6. pushbutton 移动端弹出列表选择框

    pushbutton 移动端弹出列表选择框 移动端从下往上推动画效果端弹出列表选择框,适应所有主流移动端机型,支持Node引入,require引入;如有用得不爽可以随时提意见,谢谢. demo地址: ...

  7. Android Spinner 下拉框简单应用 详细注解

    目录 Android Spinner 代码部分 Spinner代码介绍 核心代码 说在最后 @ Android Spinner Spinner 提供下拉列表式的输入方式,该方法可以有效节省手机屏幕上的 ...

  8. 一分钟掌握Android spinner下拉框

    Android 自带的spinner下拉框控件是一个不错的系统控件.主要有两种实现方式: 1.静态的spinner 在res\values中加入一个city资源数组文件 2 <resources ...

  9. android下拉选择框spinner

    spinner是什么东西呢?有点像下拉菜单,其实是一个弹出窗口,但是是可以进行进一步操作的弹出窗口.你点击那个三角形的符号,弹出一个窗口,通常是列表,然后进行操作. 它在xml文件中的定义和其它控件没 ...

随机推荐

  1. ViewPager循环广告位的实现

    1.如何实现循环播放 2.如何实现自动循环 如何实现循环播放 现在网上实现循环播放都是在adapter的getCount()方法返回一个较大的值并且instantiateItem(ViewGroup ...

  2. 程序里面的system.out.println()输出到其他位置,不输出到tomcat控制台。

    设置startup.bat: call "%EXECUTABLE%" run %CMD_LINE_ARGS% >> ..\logs\kongzitai.txt 将sys ...

  3. 02C#基础(1)

    1.关键字 C#中定义了很多关键字,关键字是构成C#基本语法的,不用去背,用的多就记住了 2.标识符 标识符是用来给类.方法.变量等命名的 命名规则:  (1)由字母.中文(不推荐).数字.下划线组成 ...

  4. 《JavaScript高级程序设计》读书笔记

    Javascript由以下三部分组成: 核心(ECMAScript) 文档对象模型(DOM) 浏览器对象模型(BOM) ECMAScript组成部分: 语法.类型.语句.关键字.保留子.操作符.对象. ...

  5. JQuery语法总结和注意事项

    1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用do ...

  6. Rabbitmq init terminating in do boot 问题

    其实出现这个问题的原因很简单,就是rabbitmq的安装目录中是不能带空格的,但是官方安装包会默认的将我们的程序安装到Program Files下,哭晕啊有没有.所以,我们将rabbitmq从D:\P ...

  7. IE6的bug

    借鉴http://css.doyoe.com/ 问题和经验列表,里面应有尽有.写几个常见的: 1.解决IE6及更早浏览器浮动时产生双倍边距的BUG display:inline 2.如何解决IE6下的 ...

  8. PHP mongoDB 操作

    <?php /** * PHP操作MongoDB学习笔记 */ //************************* //** 连接MongoDB数据库 **// //************ ...

  9. C# 取小数点

    1.Math.Round(0.333333,2);//按照四舍五入的国际标准2. double dbdata=0.335333; string str1=String.Format("{0: ...

  10. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 如果我写的不好或者有误的地方请留言 ...