• 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;
    		}
    		
    	}
    }
  • 相关阅读:
    Linux
    Linux
    JavaScript
    JavaScript
    Linux
    不可不说的Java“锁”事
    RabbitMQ公共配置
    求一个数字的补码
    项目中Controller的全局异常处理类
    如何较方便给上百张数据库表添加表字段
  • 原文地址:https://www.cnblogs.com/vaiyanzi/p/2216271.html
Copyright © 2020-2023  润新知