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与适配器模式的更多相关文章

  1. OpenGL第18,19,20讲小结

    18讲是通过调用库函数画一些简单的二次几何体,比如球体.圆锥体.圆盘等等. 19讲简单的讲了下粒子系统.其实就是三角形贴上星星的纹理,通过启用混合(GL_BLEND)来达到一种动态的粒子效果.通过修改 ...

  2. 《马上有招儿:PPT商务演示精选20讲(全彩) 》

    <马上有招儿:PPT商务演示精选20讲(全彩) > 基本信息 作者:马建强    霍然 出版社:电子工业出版社 ISBN:9787121225123 上架时间:2014-3-11 出版日期 ...

  3. PPT2010学习笔记(共20讲)

    第1讲  商务PPT中的必备元素 # 设计需打破规范 第2讲  封面页设计(一) 大图型封面页 # 基础知识点: 插入矩形和圆形 设置半透明色 设置字体变形效果 图片增强工具 利用过渡色虚化图片边缘 ...

  4. Spinner与适配器模式总结

    今天开始编辑我的第一篇博客. ------------------------------------------------------------------------------------- ...

  5. 《Tsinghua os mooc》第17~20讲 同步互斥、信号量、管程、死锁

    第十七讲 同步互斥 进程并发执行 好处1:共享资源.比如:多个用户使用同一台计算机. 好处2:加速.I/O操作和CPU计算可以重叠(并行). 好处3:模块化. 将大程序分解成小程序.以编译为例,gcc ...

  6. 第20讲 HOOK和数据库编程

    1,安装钩子过程可以通过SetWindowsHookEx函数来完成 2,得到当前线程ID,可以用GetCurrentThreadId 3,移除钩子可以用UnhookWindowsHookEx函数 4, ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单

    系列目录 不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多的时间来更新,多谢大家的一路支持.如果你觉得好,记得帮我点击推荐^-^ 我们在之前已经插入一些真实数据,其中包含了一个用户和 ...

  8. ThinkPHP项目CMS内容管理系统开发视频教程【20课】(3.02GB)

    ThinkPHP背景介绍:     ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业级应用开发而诞生的. ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(20)-权限管理系统-根据权限获取菜单

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(20)-权限管理系统-根据权限获取菜单 不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多 ...

随机推荐

  1. Eclipse设置保存时自动给变量加final

    也是针对checkstyle的,在代码检查规范时,所有的变量必须是final.为了解决这个问题,通过以下的设置可以在eclipse保存时,自动给没有加final的变量加上final. Window-& ...

  2. EBuild-API常见问题汇总

    问题1:用户访问被防火墙屏蔽检查处理流程 E-Build API(原IBE)是面向航空公司和代理人,以及第三方的航空预订服务产品.用户通过客户端,使用固定IP访问E-Build API服务器,航信网络 ...

  3. 使用Mina框架开发 QQ Android 客户端

    Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序.它提供了一个通过Java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步AP ...

  4. next数组

    首先看看next数组值的求解方法例如: 模式串 a b a a b c a c next值 0 1 1 2 2 3 1 2               next数组的求解方法是:第一位的next值为0 ...

  5. 关于在css里设置图片圆角的问题

    今天做了一个项目,效果图内页的产品图片都是带圆角的,于是前端的做了圆角的效果,div+css是这样的,首先div布局是: <div class="tiandi_item" o ...

  6. 如何启用第三方Chrome插件

    如何安装第三方Chrome插件,先下载扩展名为CRX的文件到本地,提醒一下,不能直接在该网站下打开安装,如果安装失败,可以找到此CRX文件拖入到扩展页安装就可以了! 可是,当我们通过本地安装了第三方C ...

  7. atoi()、inet_addr()等函数 time.h文件

    1.atoi() 原型:int atoi(const char *nptr); 函数说明:参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 ...

  8. iOS_SN_CoreData数据迁移

    最开始使用CoreData的时候碰到一个问题,就是当增加一个字段的时候再次运行APP会发生崩溃,一开始不知道什么原因,只知道是里面的表结构发生改变,就重新删掉APP再次安装是可以运行的,这样调试完后觉 ...

  9. UIColor各种颜色转换

    1.Hex值颜色转换 #import <UIKit/UIKit.h> @interface UIColor (Extension) // 根据无符号的32位整数转换为对应的RGB颜色 + ...

  10. Xcode7国际化(根据系统语言切换App显示的语言) - 元宵节快乐!

    老规矩, 上gif 下面是配置的大概流程: 这个是要显示中文的.strings文件的内容和格式 这个是要显示英文的.strings文件的内容和格式 下面是应用名部分: 然后下面是代码部分: impor ...