android開發步步為營之23:Spinner進階綁定包含key和value的對象

來源:互聯網
上載者:User

標籤:android   spinner   

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;
          }
}
 
}
 
二、運行效果
 
 

android開發步步為營之23:Spinner進階綁定包含key和value的對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.