Android 列表选择框 Spinner详解及实例

 更新时间:2017年06月11日 15:55:48   投稿:lqh  
这篇文章主要介绍了Android 列表选择框 Spinner详解及实例的相关资料,需要的朋友可以参考下

Android 列表选择框 Spinner详解及实例

Spinner 是 Android 的列表选择框,不过 spinner 并不需要显示下拉列表,而是相当于弹出一个菜单供用户选择。

Spinner 属性:

● android:spinnerMode:列表显示的模式,有两个选择,为弹出列表(dialog)以及下拉列表(dropdown),如果不特别设置,为下拉列表。
● android:entries:使用<string-array.../>资源配置数据源。
● android:prompt:对当前下拉列表设置标题,仅在dialog模式下有效。传递一个“@string/name”资源,需要在需要在资源文件中定义<string.../>。

Spinner 常用事件:

● AdapterView.OnItemCLickListener:列表项被点击时触发。
● AdapterView.OnItemLongClickListener:列表项被长按时触发。
● AdapterView.OnItemSelectedListener:列表项被选择时触发。

Spinner 数据绑定:

● 使用xml设置数组资源,简单方便但是不灵活,如果只是显示固定的简单数据可以使用。
● 使用 adapter 接口设置,最常见的方式,动态加载灵活,可以设置各种样式和数据来源。

XML 文件结构(一般写在string.xml文件中)

<resource>
 <string-array name="arrayname">
  <item>item1</item>
  <item>item2</item>
  <item>item3</item>
 </string-array>
<resource>

对于简单的数据可以使用 ArrayAdapter 来设置适配器,但是对于稍微复杂的数据 ArrayAdapter 就无法满足需求了,这时需要使用 SimpleAdapter 来做适配。

SimpleAdapter 适配器同样基础自 Adapter,他可以映射静态的 XML 格式的布局文件到视图中。可以指定 List<Map<P,T>> 格式数据,list 的数据对应 Spinner 中的每一行,Map 中的数据对应没一条数据 mSpinner = (Spinner)findViewById(R.id.sp_bank);

mSpinner = (Spinner)findViewById(R.id.sp_bank);
banklist = (List<String>) resultMap.get("list");
 
//将可选内容与ArrayAdapter连接起来
adapter = new ArrayAdapter<String>(self, R.layout.simple_spinner_item, banklist);
 
//设置下拉列表的风格
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 
//将adapter 添加到spinner中
mSpinner.setAdapter(adapter);
 
//添加事件Spinner事件监听
mSpinner.setOnItemSelectedListener(new SpinnerSelectedListener());
class SpinnerSelectedListener implements OnItemSelectedListener {
 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
  String str = parent.getItemAtPosition(position).toString();
  //Toast.makeText(self, "你点击的是:"+str, 2000).show();
  bankname = str;
 }
 public void onNothingSelected(AdapterView<?> arg0) {
 }
}

Spinner 弹出列表事件上是 listview,所以 listview 的各种方法都可以用在 Spinner 弹出窗口这里,当时也可以自定义数据源,自定义 Adapter 继承 BaseAdapter 实现更为灵活更为复杂的效果。

Spinner 在初始化时会自动调用一次 OnItemSelectedListener 事件,这是因为系统会自动加载默认值造成的。

解决方法:手动添加默认值,这里需要主要调用顺序,必须在注册方法之前调用。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Android实现夜间模式切换功能实现代码

    Android实现夜间模式切换功能实现代码

    现在很多App都有夜间模式,特别是阅读类的App,夜间模式现在已经是阅读类App的标配,本篇文章主要介绍了Android实现夜间模式功能实现代码,有兴趣的可以了解一下。
    2017-03-03
  • Android 一键清理、内存清理功能实现

    Android 一键清理、内存清理功能实现

    这篇文章主要介绍了Android 一键清理、内存清理功能实现,非常具有实用价值,需要的朋友可以参考下。
    2017-01-01
  • Android编程获取屏幕宽高与获取控件宽高的方法

    Android编程获取屏幕宽高与获取控件宽高的方法

    这篇文章主要介绍了Android编程获取屏幕宽高与获取控件宽高的方法,实例分析了Android针对屏幕及控件常用属性的相关操作技巧,需要的朋友可以参考下
    2015-12-12
  • 基于Android FileProvider 属性配置详解及FileProvider多节点问题

    基于Android FileProvider 属性配置详解及FileProvider多节点问题

    这篇文章主要介绍了基于Android FileProvider 属性配置详解及FileProvider多节点问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android Studio去除界面默认标题栏的方法

    Android Studio去除界面默认标题栏的方法

    这篇文章主要介绍了Android Studio去除界面默认标题栏的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2007-09-09
  • Android图片上传实现预览效果

    Android图片上传实现预览效果

    这篇文章主要介绍了Android图片上传实现预览效果的相关资料,需要的朋友可以参考下
    2016-01-01
  • android通用xml解析方法

    android通用xml解析方法

    之前做的网络相关的应用,里面涉及到了xml的解析,由于急于完成任务也没有设计就直接敲代码。这几天给一个朋友做项目的时候也涉及到了xml的解析,而且解析的内容比较多,我查看了以前的项目中的相关代码,顿时觉得很多代码都是可以优化的。在此写两个通用的xml解析方法,当然这里所讲的通用只是在一定程度上并且需要遵守一些规范。
    2013-03-03
  • Android 解决游戏发行切包资源索引冲突的问题

    Android 解决游戏发行切包资源索引冲突的问题

    这篇文章主要介绍了Android 解决游戏发行切包资源索引冲突的问题,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-03-03
  • android图片压缩的3种方法实例

    android图片压缩的3种方法实例

    这篇文章介绍了android图片压缩的3种方法实例,有需要的朋友可以参考一下
    2013-09-09
  • Android应用中使用DOM方式解析XML格式数据的基本方法

    Android应用中使用DOM方式解析XML格式数据的基本方法

    这篇文章主要介绍了Android应用中使用DOM方式解析XML格式数据的基本方法,值得注意的是DOM方式解析的效率并不高,在数据量大的时候并不推荐使用,需要的朋友可以参考下
    2016-04-04

最新评论