欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-11-16 18:32:10
android 列表选择框 spinner详解及实例 spinner 是 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 事件,这是因为系统会自动加载默认值造成的。

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

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