2018-03-19—SimpleAdapter使用实现Spinner

这两天事情比较多,所以没有来得及更新博客,对不起大家哈。



今天我们来讲一下Spinner的用法:

很多同学不知道Spinner是什么,没有用过,Spinner是一个下拉菜单,大家都用过QQ吧,QQ在账号输入的地方有一个向下的小三角,点击以后会出现一个下拉菜单,这个作用就跟Spinner很类似。

首先我们在xml中写一个Spinner的标签。

这是最基础的三个属性,现在他还是没有数据源的,我们run了以后里面也是白白的,所以现在来添加一下数据:

添加数据的方法有两种,一种是在.XML文件中添加,另一种是在java代码中添加,第一种方法一行代码就可以搞定,第二种相对第一种比较麻烦一些,那为什么还要有第二种呢?我们先吧这两种方法写出来,之后在对比一下区别。

方法1:在.xml文件中添加。


首先我们找到res下的values文件夹,在里面创建一个叫做entries(只是这样方便查找,你想起asd也可以),


在里面写一个string-array的标签,并在里面写一些数据。


为了你们理解,我把名字起成了asd。然后在Spinner中写entries属性,里面写的是string-array的name的值。然后我们来看一下效果:


我们看到了,点击他以后,会出现一个下拉菜单,里面就是我们之前写的属性。是不是很简单,下面我们来看一下第二种写法。

方法2:用java代码实现:

首先我们在java中创建一个spinner对象。并且指定id(这些都是之前的知识,就不多说了。)

然后添加数据需要调用一个setAdapter方法,这个方法接收一个类型为SpinnerAdapter的参数。SimpleAdapter是Adapter(适配器)的一个子类。适配器又是什么呢,适配器是指把我们界面和数据连接显示的一个东西,我们要通过这个适配器,来吧数据显示在Spinner中。


然后我们需要创建一个SimpleAdapter,

我们发现他的构造方法里面有5个参数,我们一个一个来看一下:

context就不谈了,上下文。

data 接收一个数据类型为List嵌套Map的集合。这个数据和最后两个数据我们等会儿会详细讲一下。

resource 是传入我们的布局,我们的数据将显示在什么样的布局上,可以是android内置的,也可以是我们自己创建的。

from和to:

    在data数据类型中,我们可以看到他里面嵌套的Map的key值是String类型,value是任意类型。Map中value放入的是我们控件显示的数据值(比如我们的图片,或者是一些文字)。而有一个控件、就会有一个控件的Id、就会有一个Map、那么from数组中就会存放一个值,这个值就是Map的key值。而to数组存放的就是我们控件的Id。下面我们来演示一下。

我们选择用自定义layout。首先我们在layout下创建一个layout名为list(名字随便起),在里面创建两个控件并且指定Id,上图自己看。

我们需要一个List,所以我们来创建一个List,

我们创建了ArrayList之后,有顺便创建添加了数据。因为在list中有两个控件,所以每次必须有两个Map之传入,第一个是我们imageview的数据,key值命名为pic,第二个是TextView的值为了简单就随便的了,key值命名为text。

现在我们可以创建SimpleAdapter了:


现在来看这个构造器应该比较轻松了吧,第一个参数不说了。第二个我们传入刚刚创建的List。第三个是我们刚刚创建的布局。第四个我们新建了一个String数组,里面放入了我们的Map的两个key值。第五个参数我们新建了一个int数组,在里面放入了我们list的两个控件的id(注意string数组和int数组的值要一一对应)。

最后一步,添加adapter。

好了,现在run一下,我们可以看看是什么样的。


可以看到了,跟我们预期的一样。



最后给大家列一下Spinner的其他xml标签属性:

android:popupBackground:拉出的菜单的背景颜色。

android:spinnerMode:设置Spinner的点开方式:dialog窗口形式、dropdown下拉形式。



Spinner点击事件


很简单,唯一要注意的就是他不是用clickListener的,而是itemSelectedListener。第一个函数是我们点击了哪个item,他就会触发。第二个不用管了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容