android spinner 实现Text 和 value

在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()方法。运行得到下图:

image

点击点击获取值按钮得到value和text如下图:

image

点击回显按钮spinner将选中value=5的text如下图:

image 

全部代码:

/**
 * 
 */
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;
		}
		
	}
}
原文地址:https://www.cnblogs.com/vaiyanzi/p/2216271.html