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

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

Spinner 属性:

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

Spinner 常用事件:

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

Spinner 数据绑定:

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

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

   item1  item2  item3 

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

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

mSpinner = (Spinner)findViewById(R.id.sp_bank);banklist = (List) resultMap.get("list"); //将可选内容与ArrayAdapter连接起来adapter = new ArrayAdapter(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 事件,这是因为系统会自动加载默认值造成的。

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

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

更多相关文章

  1. Android(安卓)应用架构组件(Architecture Components)实践
  2. [Android] ContentProvider实例详解
  3. 在Android中查看和管理sqlite数据库
  4. android Content Provider 详解
  5. Android(安卓)Android利用Fiddler进行网络数据抓包
  6. Android请求获取Java后端数据,登录界面例子
  7. Android中的SQLite使用学习
  8. android ListView没有数据时信息显示
  9. android蓝牙BLE(三) —— 广播

随机推荐

  1. centos7下配置ntp客户端同步时间服务(包括
  2. CentOS下使用MyTop实时监控MySQL
  3. Linux命令行下交互式HTTP客户端--HTTP Pr
  4. CentOS 7下使用FirewallD构建动态防火墙
  5. Linux压力测试软件Stress使用指南
  6. 批量杀死MySQL连接的几种方法
  7. Java访问数据库之JDBC实现方式
  8. Hping使用方法详解
  9. 如何解决Firefox&Chrome下无法访问特定端
  10. 在Nginx使用Lua扩展功能