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

发布时间 - 2026-01-11 01:49:42    点击率:

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  # 列表选择框  # Spinner详解及实例  # android studio 的下拉菜单Spinner使用详解  # Android使用Spinner控件实现下拉列表的案例  # Android使用 Spinner控件实现下拉框功能  # Android控件Spinner实现下拉列表及监听功能  # Android Spinner 组件的应用实例  # Android第三方开源下拉框NiceSpinner使用详解  # Android中使用Spinner实现下拉列表功能  # Android列表选择框Spinner使用方法详解  # Android-SPI学习笔记  # 弹出  # 自定义  # 可以使用  # 默认值  # 的是  # 希望能  # 资源配置  # 可选  # 来做  # 谢谢大家  # 用在  # 这是因为  # 写在  # 解决方法  # 绑定  # 最常见  # 弹出窗口  # 加载  # 有两个  # 自动加载 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  如何快速搭建安全的FTP站点?  利用JavaScript实现拖拽改变元素大小  详解Android中Activity的四大启动模式实验简述  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  西安专业网站制作公司有哪些,陕西省建行官方网站?  简单实现Android文件上传  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel如何实现API速率限制?(Rate Limiting教程)  如何登录建站主机?访问步骤全解析  C++时间戳转换成日期时间的步骤和示例代码  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  移动端脚本框架Hammer.js  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  微信小程序 HTTPS报错整理常见问题及解决方案  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  青岛网站建设如何选择本地服务器?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  如何快速打造个性化非模板自助建站?  如何快速搭建高效服务器建站系统?  开心动漫网站制作软件下载,十分开心动画为何停播?  Android自定义listview布局实现上拉加载下拉刷新功能  Laravel怎么调用外部API_Laravel Http Client客户端使用  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  简单实现jsp分页  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  用v-html解决Vue.js渲染中html标签不被解析的问题  Laravel distinct去重查询_Laravel Eloquent去重方法  JavaScript中的标签模板是什么_它如何扩展字符串功能  Python结构化数据采集_字段抽取解析【教程】  Laravel如何实现多对多模型关联?(Eloquent教程)  网易LOFTER官网链接 老福特网页版登录地址  PHP正则匹配日期和时间(时间戳转换)的实例代码  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Laravel怎么实现验证码(Captcha)功能  Laravel中的Facade(门面)到底是什么原理  再谈Python中的字符串与字符编码(推荐)  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  进行网站优化必须要坚持的四大原则  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  详解Huffman编码算法之Java实现  如何批量查询域名的建站时间记录?  微信小程序 wx.uploadFile无法上传解决办法