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

作者:lqh 时间:2021-11-18 14:59:08 

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 事件,这是因为系统会自动加载默认值造成的。

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

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

来源:http://www.123si.org/android/247.html

标签:Android,Spinner
0
投稿

猜你喜欢

  • SpringBoot中@Import注解如何正确使用

    2023-07-28 12:36:16
  • C#浅拷贝和深拷贝实例解析

    2022-09-03 02:31:05
  • 解决Java原生压缩组件不支持中文文件名乱码的问题

    2021-07-29 22:39:38
  • C#画笔使用复合数组绘制单个矩形的方法

    2022-03-20 01:41:09
  • c# 委托的常见用法

    2021-08-11 13:44:05
  • SpringMvc后台接收json数据中文乱码问题详解

    2022-12-03 00:08:58
  • 深入理解Java中的弱引用

    2023-07-19 20:14:53
  • Java多线程与线程池技术分享

    2021-07-25 07:35:11
  • android ItemTouchHelper实现可拖拽和侧滑的列表的示例代码

    2023-08-14 14:51:51
  • Android 源码浅析RecyclerView ItemAnimator

    2022-04-20 19:47:41
  • C#中string用法实例详解

    2022-06-11 03:22:17
  • C#根据年月日计算星期几的函数小例子

    2023-11-20 00:12:40
  • Java SpringBoot 使用拦截器作为权限控制的实现方法

    2023-04-18 01:41:58
  • 微信js sdk invalid signature签名错误问题的解决方法分析

    2021-07-26 02:26:47
  • 解决fastjson泛型转换报错的解决方法

    2023-04-02 03:10:44
  • Java实现快速排序算法的完整示例

    2022-10-15 11:57:40
  • springmvc与mybatis集成配置实例详解

    2021-06-16 22:10:27
  • Android Flutter实现五种酷炫文字动画效果详解

    2023-06-27 02:57:16
  • Java+MySQL实现学生信息管理系统源码

    2023-11-28 04:29:31
  • Java之常用类小结案例讲解

    2022-10-08 07:34:24
  • asp之家 软件编程 m.aspxhome.com