android开发步步为营之23:Spinner进阶绑定包含key和value的对象

Spinner一般绑定字符串数组就可以了,比如之前 的做法 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(

this, R.array.fruit, android.R.layout.simple_spinner_item);,有时候,我们需要绑定一个对象,比如显示的时候,显示value,但是程序需要获取的是key值,这个时候,我们就需要绑定自定义的对象。试验场景:证件类型下拉框,显示给用户看的是身份证、护照、户口本等等的文字,但是我们需要记录数据库的是对应的key 比如0,1,2。

一、设计Activity SpinnerKeyValueActivity

/**

*

*/

package com.figo.helloworld;

import java.util.ArrayList;

import java.util.List;

import android.view.View;

import android.app.Activity;

import android.os.Bundle;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemSelectedListener;

import android.widget.ArrayAdapter;

import android.widget.Spinner;

import android.widget.TextView;

/**

* @author zhuzhifei

*

*/

public class SpinnerKeyValueActivity extends Activity {

private Spinner spcerticatetype;

private TextView tvcerticatetype;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

//设置页面

setContentView(R.layout.spinnerkeyvalue);

spcerticatetype=(Spinner)findViewById(R.id.spcerticatetype);

tvcerticatetype=(TextView)findViewById(R.id.tvcerticatetype);

//绑定数据到spinner

BindData();

}

//绑定数据到spinner

private void BindData()

{

// 设置证件类型

List<SpinnerItem> lst = new ArrayList<SpinnerItem>();

SpinnerItem item0 = new SpinnerItem("0", "身份证");

SpinnerItem item1 = new SpinnerItem("1", "护照");

SpinnerItem item2 = new SpinnerItem("2", "军官证");

SpinnerItem item3 = new SpinnerItem("3", "士兵证");

SpinnerItem item4 = new SpinnerItem("4", "回乡证");

SpinnerItem item5 = new SpinnerItem("5", "临时身份证");

SpinnerItem item6 = new SpinnerItem("6", "户口本");

SpinnerItem item7 = new SpinnerItem("7", "其他");

SpinnerItem item8 = new SpinnerItem("8", "外国人居留证");

SpinnerItem item9 = new SpinnerItem("9", "警官证");

lst.add(item0);

lst.add(item1);

lst.add(item2);

lst.add(item3);

lst.add(item4);

lst.add(item5);

lst.add(item6);

lst.add(item7);

lst.add(item8);

lst.add(item9);

ArrayAdapter<SpinnerItem> aradapter = new ArrayAdapter<SpinnerItem>(

this.getApplicationContext(),

android.R.layout.simple_spinner_item, lst);

aradapter

.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spcerticatetype.setAdapter(aradapter);

//选中某个选项后,添加事件

spcerticatetype.setOnItemSelectedListener(

new OnItemSelectedListener() {

public void onItemSelected(

AdapterView<?> parent, View view, int position, long id) {

SpinnerItem item = (SpinnerItem) spcerticatetype.getSelectedItem();

tvcerticatetype.setText("您选择的是:key="+item.Key+",value="+item.Value);

}

public void onNothingSelected(AdapterView<?> parent) {

}

});

}

// 定义下拉框选项

public class SpinnerItem {

private String Key = "";

private String Value = "";

public SpinnerItem() {

Key = "";

Value = "";

}

public SpinnerItem(String _Key, String _Value) {

Key = _Key;

Value = _Value;

}

@Override

public String toString() {

// 为什么要重写toString()呢?因为适配器在显示数据的时候,如果传入适配器的对象不是字符串的情况下,直接就使用对象.toString()

// TODO Auto-generated method stub

return Value;

}

public String GetKey() {

return Key;

}

public String GetValue() {

return Value;

}

}

}

二、运行效果

时间: 2024-09-29 23:20:57

android开发步步为营之23:Spinner进阶绑定包含key和value的对象的相关文章

android开发步步为营之56:Android开发技术点总结(持续更新)

1.eclipse svn插件下载 http://subclipse.tigris.org/update_1.6.x http://subclipse.tigris.org/update_1.8.x 64位机器 http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA 2.eclipse常用插件下载 http://blog.csdn.net/jackiehff/article/details/8181945 3.unico

android开发步步为营之70:android接入Google Analytics总结

求人不如求己,今天项目里要接入Google Analytics,这个是做应用统计分析用的,可以查看当前手机活跃用户,事件点击等等数据,先看看效果: 之前eclipse里面接入已经成功,昨天项目组决定项目转成使用android studio来开发,看google官方文档,官方文档https://developers.google.com/analytics/devguides/collection/android/v4/,然后官方文档里面的配置文件是用google-services.json的,这

android开发步步为营之20:网络设置

网络设置这块在手机应用里面是非常重要的一块,因为一般应用都需要和外部网络做交互的.本篇文章就展示了一个比较经典应用场景.比如我最近在开发的转账应用.这个是需要和网络交互的.当用户打开应用之后,应用首先会判断用户是否已经打开wifi或者gprs网络.没有则跳转到系统的无线和网络设置界面,当用户设置好了之后,我这里做了一个更人性化的处理,创建了一个广播接收器,因为我们知道,手机在打开网络或者收到短信的时候,都会对外发布一条广播.一旦网络连接上了之后,我的这个广播接收器,就会收到信息,然后判断当前的转

android开发步步为营之58:给图片绘制圆形气泡背景效果

最近在开发项目的时候,有一个需求,需要给应用图标绘制圆形气泡背景,有了彩色气泡这样显得漂亮一点,气泡的颜色是应用图标的颜色均值,先看看效果,然后,我再给出demo. demo应用图标是这样的: 添加气泡背景后是这样的: 仔细看圆形背景颜色是图标颜色的均值. 好的,下面我们来完成这个demo. 第一步.编写页面activity_drawcycle.xml <?xml version="1.0" encoding="utf-8"?> <LinearLa

android开发步步为营之68:Facebook原生广告接入总结

开发应用的目的是干嘛?一方面当然是提供优质服务给用户,还有一方面最重要的还是须要有盈利.不然谁还有动力花钱花时间去开发app? 我们的应用主攻海外市场,所以主要还是接入国外的广告提供商.本文就今天刚完毕接入facebook原生广告功能,介绍一下怎样接入fb的原生广告.供大家參考.         第一步:申请接入账号(须要FQ) https://developers.facebook.com/docs/audience-network/getting-started#company_info h

android开发步步为营之62:进程间通信之Aidl

android进程之间通信,比如一个app和另外一个app交互,有哪几种方式,主要有1.activity的跳转  2.contentprovider  3.broadcast  4.aidl,个人认为前面3种相对简单,应用场景也不一样.本文研究一下使用aidl进行进程之间的通信. aidl全称是Android Interface Definition Language,即接口定义语言,依我理解,这个其实和.net,java里面的webservice相似的,webservice也有个wsdl We

android开发步步为营之34:四大组件之ContentProvider

ContentProvider,从字面意义上理解,内容提供者,这个类目的就是一个桥梁的作用,让一个应用的数据(SQLiteDatabase, SharedPreferences,Xml,Txt等数据),通过ContentProvider可以让其他的应用访问. 理论知识 (一).ContentProvider简介 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同

android开发步步为营之35:GridView的用法

之前使用asp.net开发软件的过程中也使用GridView,发现android里面也有这么一个控件,使用方法有点相似,都是使用适配器将数据绑定到这个控件,然后将数据展示出来,应该说它和ListView一样,是个非常常用的控件,所以我们应该学习如何使用它,理论知识是没多少的,就是一个展示数据的控件,继承关系如下: public class GridView extends AbsListView java.lang.Object android.view.View android.view.Vi

android开发步步为营之72:右滑关闭Activity

通过右滑手势关闭当前Activity,这个是很常见的需求,网上参考过几篇文章发现实现都比较复杂,他们大多自己另外写了个Layout,然后这个Layout当做页面的布局,经测试其实有更简单一点的方法,写个BaseActivity,其他Activity继承即可.这里给出代码,大家测试看看.有问题回馈一下,谢谢! package com.figo.study.activity; import android.app.Activity; import android.os.Bundle; import