个人学习经验:第一步:新建工程,在main.xml中,main.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<Spinner
        android:id="@+id/LineNumId"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

第二步:新建一个item.xml文件,用于对下拉列表框下拉内容进行布局,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
   
    <TextView
        android:id="@+id/textViewId"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
   
</LinearLayout>

第三步:在MainActivity中进行具体代码编写,内容如下:

public class MainActivity extends Activity {
    //声明Spinner对象
 private Spinner spinner =null;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  /**
   * 动态创建ArrayAdapter
   */
  List<String> list = new ArrayList<String>();
  list.add("test1");
  list.add("test2");
  //参数(上下文对象,布局文件,指定textView的id,为整个列表提供数据)
  ArrayAdapter adapter = new ArrayAdapter(this,R.layout.item,R.id.textViewId,list);
  
  //根据id找到Spinner对象
  spinner = (Spinner)findViewById(R.id.spinnerld);
  //将生成好的adapter设置到spinner中
  spinner.setAdapter(adapter);
  //设置菜单标题
  spinner.setPrompt("测试");
  //绑定监听器
  spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());
 }
 /**
  * 这个监听器主要用来监听用户选择列表的动作
  */
 class SpinnerOnSelectedListener implements OnItemSelectedListener{
  //用户选定了一个选项时,会调用该方法
  //第一个参数表示整个列表,第二个蚕食表示当前被选中的选项,第三个参数是选中的位置,第四个参数是选中的id
  @Override
  public void onItemSelected(AdapterView<?> adapterView, View view, int position,
    long id) {
   String selected = adapterView.getItemAtPosition(position).toString();
   System.out.println("This Checked----->"+selected);
  }
  //用户为选定状态下触发该方法
  @Override
  public void onNothingSelected(AdapterView<?> adapterView) {
   System.out.println("nothingSelected");
  }
  
 }
}

2.静态创建的方法,首先在String.xml中定义一个数组,String.xml内容如下:

<?xml version="1.0" encoding="utf-8"?> <resources>

<string name="app_name">下拉列表测试</string>

<string name="action_settings">Settings</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>

然后重写MainActivity中的代码,信息如下:

public class MainActivity extends Activity {
    //声明Spinner对象
 private Spinner spinner =null;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

/**
   * 静态创建ArrayAdapter
   */
  //通过createFromResource方法创建ArrayAdapter对象
  //第一个参数是上下文对象
  //第二个参数引用了在string.xml文件当中定义的String数组
  //第三个参数是用来指定Spinner的样式,是一个布局文件ID,该布局文件由Android系统提供,也可替换为自己定义的布局文件
  ArrayAdapter<CharSequence> adapter =
    ArrayAdapter.createFromResource(
      this, R.array.planets_array,android.R.layout.simple_spinner_item);
  //设置Spinner当中的每一个条目的样式,同样是引用一个Android系统提供的布局文件
  adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
  
  //根据id找到Spinner对象
  spinner = (Spinner)findViewById(R.id.spinnerld);
  //将生成好的adapter设置到spinner中
  spinner.setAdapter(adapter);
  //设置菜单标题
  spinner.setPrompt("测试");
  //绑定监听器
  spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());
 }
 /**
  * 这个监听器主要用来监听用户选择列表的动作
  */
 class SpinnerOnSelectedListener implements OnItemSelectedListener{
  //用户选定了一个选项时,会调用该方法
  //第一个参数表示整个列表,第二个蚕食表示当前被选中的选项,第三个参数是选中的位置,第四个参数是选中的id
  @Override
  public void onItemSelected(AdapterView<?> adapterView, View view, int position,
    long id) {
   String selected = adapterView.getItemAtPosition(position).toString();
   System.out.println("This Checked----->"+selected);
  }
  //用户为选定状态下触发该方法
  @Override
  public void onNothingSelected(AdapterView<?> adapterView) {
   System.out.println("nothingSelected");
  }
  
 }
}

好了,这样一个简单的下拉列表就创建成功了,希望各位看官细心观察下动态创建和静态创建两种方法的区别。

【基础篇】Android下拉列表框(Spinner)的基本使用的更多相关文章

  1. ESA2GJK1DH1K基础篇: Android实现MQTT封装源码使用说明

    说明 这一节说明一下基础篇APP源码里面MyMqttCilent.java这个文件的使用 新建工程 安装MQTT的jar包 implementation 'org.eclipse.paho:org.e ...

  2. [Android 性能优化系列]内存之基础篇--Android怎样管理内存

    大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地 ...

  3. 4.Android下拉列表框spinner学习

    下拉列表框被广泛使用,诸如淘宝.京东等手机端经常可以看到这个部件身影,今天就来学习下它. 首先布局文件增加代码:如图 接下来在values下增加arrays.xml 如图               ...

  4. ESA2GJK1DH1K基础篇: Android实现SmartConfig简单Demo

    下载源码去 百度安信可 导入源码 等待加载完 我的提示更新下软件 ,我就更新下 安装完成以后重新导入工程 安装到手机 注意,由于Android 9.0 以后的获取WIFI名称需要打开GPS,所以如果提 ...

  5. ESA2GJK1DH1K基础篇: Android连接MQTT简单的Demo

    题外话 我老爸也问我物联网发展的趋势是什么!!!!!! 我自己感觉的:(正在朝着 "我,机器人" 这部电影的服务器方向发展) 以后的设备都会和服务器交互,就是说本地不再做处理,全部 ...

  6. Android Fragment使用(一) 基础篇 温故知新

    Fragment使用的基本知识点总结, 包括Fragment的添加, 参数传递和通信, 生命周期和各种操作. Fragment使用基础 Fragment添加 方法一: 布局里的标签 标识符: tag, ...

  7. 深入理解gradle编译-Android基础篇

    深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...

  8. ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView

    原文地址: ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http:/ ...

  9. ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map

    原文地址: ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NE ...

随机推荐

  1. 日志文件支持unicode字符的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 开发的程序兼容多字节字符集和unicode字符集,最近发现一个问题,在unicode字符集下输出的日志文件是乱码的.显 ...

  2. Linux/Mac vi命令详解

    刚开始学着用Linux,对vi命令不是很熟,在网上转接了一篇. vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 ...

  3. PHP安装curl扩展

    昨天在写文章的时候,突然出现了一个很顽皮的bug. 一直跳到404页面??? 于是我赶紧打开debug,看看什么情况! 弹出的错误是 :Call to undefined function Home\ ...

  4. iOS开发 - 数据归档与恢复 NSKeyedArchiver

    归档与恢复归档 归档,英文Archiver['ɑrkɪvə],这里指的是将OC的对象存储为一个文件或者网络上的一个数据块. 恢复归档.英文UnArchiver,指的是将一个来自文件或网络的归档数据块恢 ...

  5. php中对象转数组有哪些方法(总结测试)

    php中对象转数组有哪些方法(总结测试) 一.总结 一句话总结:json_decode(json_encode($array),true)和array强制转换(或带递归) 1.array方式强制转换对 ...

  6. POJ 3281 网络流

    题意: 思路: 网络流 重在建图- 建完了图 就一切都好说了 这道题 我的想法是 先把源点和所有的食品连上边 (容量为1) 再把食品和对应的奶牛连上边 (容量为1) 这个时候要拆点 因为每只奶牛只能才 ...

  7. C#解决System.Security.Cryptography.MD5.Create()调用的目标发生了异常)的问题

    今天搭建微信扫码支付环境的时候,一样的配置参数,调用连接提示错误 错误:调用的目标发生了异常 然后跟踪到执行 MD5 md5 = System.Security.Cryptography.MD5.Cr ...

  8. JSP页面的静态包含和动态包含的区别与联系

    JSP中有两种包含: 静态包含:<%@include file="被包含页面"%> 动态包含:<jsp:include page="被包含页面" ...

  9. js笔记3

    1字符串 replace("","")替换,前面为要替换什么,后面为替换的内容只能替换一个 2DOM 时间三要素 事件源 谁身上发生的行为 事件 单机 双击 事 ...

  10. caioj 1066 动态规划入门(一维一边推4:护卫队)(分组型dp总结)

    很容易想到f[i]为前i项的最优价值,但是我一直在纠结如果重量满了该怎么办. 正解有点枚举的味道. 就是枚举当前这辆车与这辆车以前的组合一组,在能组的里面取最优的. 然后要记得初始化,因为有min,所 ...