第20讲- Spinner与适配器模式
第20讲 Spinner与适配器模式
使用Spinner相当于从下拉列表中选择项目,Spinner是一个每次只能选择所有项的一个项的控件。它的项来自于与之相关联的适配器中。Spinner的重点问题就是下拉列表项的配置。
重要属性
android:prompt:当Spinner对话框关闭时显示该提示
重要方法
setPrompt(CharSequence prompt):设置当Spinner对话框关闭时显示的提示
performClick():如果它被定义就调用此视图的OnClickListener
setOnItemClickListener(AdapterView.OnItemClickListener l):当项被点击时调用
onDetachedFromWindow():当Spinner脱离窗口时被调用。
、静态data使用方法
(直接在xml布局文件中绑定数据源)
①:首先定义一个布局文件:在activity_main.xml文件中定义一个spinner;
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
②:建立数据源:然后定义一个选择数组,这些数据将会在Spinner下来列表中显示。在string.xml中定义:
<string-arrayname="spinner_data">
<item >云南</item>
<item >北京</item>
<item >香港</item>
</string-array>
③:然后将spinner_data导入layout的activity_main.xml中:
android:entries="@array/spinner_data"
可以设置显示方式,有两种
android:spinnerMode="dialog" //以弹出框形式显示
android:spinnerMode="dropdown" //以下拉列表形式显示,默认是dropdown
、data通过列表动态添加
、利用Adapter(适配器模式)将不同数据源导入spinner
Adapter(适配器模式)将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。(可以举漏斗的例子,实现不同容器之间导入液体)
Adapter可看做是数据源与UI组件之间的桥梁,adapter、数据和UI之间的关系如下:
BaseAdaper是android中经常用到的基础数据适配器,他继承接口类Adaper。它的主要作用是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件。
主程序如下:
//两种不同的数据源
//数据源ss
private String[]ss=new String[] { "上海", "北京", "深圳" };
//数据源list, 初始化放在程序当中
private List<String> list=new ArrayList<String>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//添加一个下拉列表项的list,这里添加的项就是下拉列表的菜单项
list.add("java");
list.add("php");
list.add("C++");
Spinner spinner=(Spinner) findViewById(R.id.spinner1);
BaseAdapter adapter=new MyAdapter(); // 建立Adapter
spinner.setAdapter(adapter); //绑定Adapter,将适配器添加到下拉列表
//spinner-->使用adapter固定方法(getCount方法,getView方法等)-->查找相应的data
}
/*自定义适配器类 */
public class MyAdapter
extends BaseAdapter{
public int getCount() {
return ss.length; //数据源的长度,这里使用ss数组作为数据源
//return list.size(); //这里使用list作为数据源
}
public Object getItem(int position){
return null;
}
public long getItemId(int position){
return 0;
}
/*遍历数据源,用来刷新它所在的ListView。
position是指adapter中的当前位置,通过getCount和getItem来使用。
convertView用于缓存数据,主要用于赋值后返回。
parent表示当前view的parent view。
*/
public View getView(int position,View convertView, ViewGroup parent) {
TextView textView=new TextView(MainActivity.this);
textView.setText(ss[position]);
//textView.setText(list.get(position));
return textView;
}
}
、利用ArrayAdapter构造adapter
//第一步:添加一个下拉列表项的数据源ss,这里添加的项就是下拉列表的菜单项
private String[]ss=new String[] { "云南", "北京", "香港" };
Spinner spinner=(Spinner) findViewById(R.id.spinner1);
//第二步:为下拉列表定义一个适配器,这里就用到里前面定义的ss。
ArrayAdapter<String> adapter= new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, ss);
/*其中,第一个是conetxt,也就是application的环境,第二个参数是spinner未展开的布局方式,第三个参数是数据源 */
//第三步:为适配器设置下拉列表下拉时的菜单样式。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//第四步:将适配器添加到下拉列表上
spinner.setAdapter(adapter);
//第五步:为下拉列表设置各种事件的响应,这个事响应菜单被选中
spinner.setOnItemSelectedListener(new OnItemSelectedListener){
publicvoid onItemSelected(AdapterView<?> parent,View view,
int position, long id) {
Toast.makeText(MainActivity.this,ss[position], 0).show();
}
第20讲- Spinner与适配器模式的更多相关文章
- OpenGL第18,19,20讲小结
18讲是通过调用库函数画一些简单的二次几何体,比如球体.圆锥体.圆盘等等. 19讲简单的讲了下粒子系统.其实就是三角形贴上星星的纹理,通过启用混合(GL_BLEND)来达到一种动态的粒子效果.通过修改 ...
- 《马上有招儿:PPT商务演示精选20讲(全彩) 》
<马上有招儿:PPT商务演示精选20讲(全彩) > 基本信息 作者:马建强 霍然 出版社:电子工业出版社 ISBN:9787121225123 上架时间:2014-3-11 出版日期 ...
- PPT2010学习笔记(共20讲)
第1讲 商务PPT中的必备元素 # 设计需打破规范 第2讲 封面页设计(一) 大图型封面页 # 基础知识点: 插入矩形和圆形 设置半透明色 设置字体变形效果 图片增强工具 利用过渡色虚化图片边缘 ...
- Spinner与适配器模式总结
今天开始编辑我的第一篇博客. ------------------------------------------------------------------------------------- ...
- 《Tsinghua os mooc》第17~20讲 同步互斥、信号量、管程、死锁
第十七讲 同步互斥 进程并发执行 好处1:共享资源.比如:多个用户使用同一台计算机. 好处2:加速.I/O操作和CPU计算可以重叠(并行). 好处3:模块化. 将大程序分解成小程序.以编译为例,gcc ...
- 第20讲 HOOK和数据库编程
1,安装钩子过程可以通过SetWindowsHookEx函数来完成 2,得到当前线程ID,可以用GetCurrentThreadId 3,移除钩子可以用UnhookWindowsHookEx函数 4, ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单
系列目录 不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多的时间来更新,多谢大家的一路支持.如果你觉得好,记得帮我点击推荐^-^ 我们在之前已经插入一些真实数据,其中包含了一个用户和 ...
- ThinkPHP项目CMS内容管理系统开发视频教程【20课】(3.02GB)
ThinkPHP背景介绍: ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业级应用开发而诞生的. ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(20)-权限管理系统-根据权限获取菜单
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(20)-权限管理系统-根据权限获取菜单 不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多 ...
随机推荐
- hdu1547之BFS
Bubble Shooter Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- lua 加密
项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,试了一下,确实可行.下面是使用原生的lua解释器编译字节码:1.新 ...
- 理解prototype、proto和constructor的三角关系
javascript里的关系又多又乱.作用域链是一种单向的链式关系,还算简单清晰:this机制的调用关系,稍微有些复杂:而关于原型,则是prototype.proto和constructor的三角关系 ...
- iOS开发中的MVC设计模式
我们今天谈谈cocoa程序设计中的 模型-视图-控制器(MVC)范型.我们将从两大方面来讨论MVC: 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开发是 ...
- Objective-C基础之──多态
Objective-C语言是面向对象的高级编程语言,因此,它具有面向对象编程所具有的一些特性,即:封装性.继承性和多态性. 今天介绍一下Objective-C中的多态性. 一.什么是多态 多态:不同对 ...
- The Suspects
算法:并查集 严重急性呼吸系统综合症( SARS), 一种原因不明的非典型性肺炎,从2003年3月中旬开始被认为是全球威胁.为了减少传播给别人的机会, 最好的策略是隔离可能的患者. 在Not-Spre ...
- mysql定时执行及延时执行,实现类似sql server waitfor功能
熟悉SQL Server的人都知道,它有一个很有用的功能,waitfor time和waitfor delay,前者表示在某个时间执行,后者表示等待多长时间执行.在我们测试功能和定时执行的时候特别有用 ...
- JQuery原理介绍及学习方法
前言 对于JQuery,想必大家都很熟悉.目前,很多web项目,在实施的过程中,考虑到各浏览器原生JS API的兼容性,大都会选用JQuery或类似于JQuery这样的框架来进行网页效果开发.JQue ...
- Zepto源码笔记(三)
ps:本文中"组装成成数组"指的是若元素个数大于1则返回数组,若元素只有1个则返回元素本身 以下函数是$.fn该对象的方法 ready(callback) 通过readyRE正则表 ...
- javascript字符类型操作函数
//获取字符串的长度 String.prototype.getByteLength = function() { var bytes=0,i=0; for (; i<this.length; + ...