|
在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;
}
}
}
复制代码 |
|