在Mobile下面实现Text和value非常简单,在控件DorpdownList中为我们已经做好了,直接就可以拿到text和value的值,那么在android下面应该怎么获取Text和Value的值呢?一般有两种思路:
1、通过自定义数据源的方式来实现获取Text和value的值;
2、通过自定义Adapter的方式来实现获取Text和value的值。
本文将通过第一种方式来实现获取Text和value的值,以及通过value来绑定spinner中选中的值。
首先定义spinner的数据结构如下:
/** * @author xushilin * xsl xushilin@kingtoneinfo.com * @version: 创建时间:2011-10-18 上午11:12:06 * 说 明: Spinner数据源的结构 * 修改历史: */ public class SpinnerData { private String value = ""; private String text = ""; public SpinnerData() { value = ""; text = ""; } public SpinnerData(String _value, String _text) { value = _value; text = _text; } @Override public String toString() { return text; } public String getValue() { return value; } public String getText() { return text; } }
上面的结构包含两个属性,value保存的是值,text保存显示给用户的数据。
下面创建spinner的数据实例并绑定到spinner上:
private void Bind() { List<SpinnerData> lst = new ArrayList<SpinnerData>(); for (int i = 0; i < 10; i++) { SpinnerData c = new SpinnerData(i + "", "显示值" + i); lst.add(c); } ArrayAdapter<SpinnerData> Adapter = new ArrayAdapter<SpinnerData>(this, android.R.layout.simple_spinner_item, lst); Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp.setAdapter(Adapter); }
在onCreate()获取界面上的实例控件并调用上面的Bind()方法。运行得到下图:
点击点击获取值按钮得到value和text如下图:
点击回显按钮spinner将选中value=5的text如下图:
全部代码:
/** * */ package com.demo.list; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.Toast; import com.demo.HelloWorld.R; /** * @author xsl xsl xushilin@kingtoneinfo.com * @version: 创建时间:2011-9-21 上午09:56:43 说 明: 修改历史: */ public class SpinnerSelectValue extends Activity implements OnClickListener { private Spinner sp; private Button btnGetValue,btnSetValue; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.spinner_select_value); sp = (Spinner) findViewById(R.id.spinner1); btnGetValue=(Button)findViewById(R.id.btnGetValue); btnGetValue.setOnClickListener(this); btnSetValue=(Button)findViewById(R.id.btnSetValue); btnSetValue.setOnClickListener(this); Bind(); } private void Bind() { List<SpinnerData> lst = new ArrayList<SpinnerData>(); for (int i = 0; i < 10; i++) { SpinnerData c = new SpinnerData(i + "", "显示值" + i); lst.add(c); } ArrayAdapter<SpinnerData> Adapter = new ArrayAdapter<SpinnerData>(this, android.R.layout.simple_spinner_item, lst); Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp.setAdapter(Adapter); } /** * @author xushilin * xsl xushilin@kingtoneinfo.com * @version: 创建时间:2011-10-18 上午11:12:06 * 说 明: Spinner数据源的结构 * 修改历史: */ public class SpinnerData { private String value = ""; private String text = ""; public SpinnerData() { value = ""; text = ""; } public SpinnerData(String _value, String _text) { value = _value; text = _text; } @Override public String toString() { return text; } public String getValue() { return value; } public String getText() { return text; } } public void onClick(View v) { switch(v.getId()){ case R.id.btnGetValue: String s="value="+((SpinnerData)sp.getSelectedItem()).getValue() +" && Text="+((SpinnerData)sp.getSelectedItem()).getText(); Toast.makeText(this, s, Toast.LENGTH_LONG).show(); break; case R.id.btnSetValue: @SuppressWarnings("unchecked") ArrayAdapter<SpinnerData> lst=(ArrayAdapter<SpinnerData>)sp.getAdapter(); for(int i=0;i<lst.getCount();i++){ if(lst.getItem(i).getValue().equalsIgnoreCase("5")){ sp.setSelection(i); break; } } break; } } }