1. 程式人生 > >在android的spinner中,實現取VALUE值和ID值

在android的spinner中,實現取VALUE值和ID值

spinner繫結資料來源可以是.xml檔案繫結,也可以是字串陣列繫結,但是我在網上找到的都是隻能單個字串拉上去,沒有可以自定義的ID來識別;

這讓很多的事情都不好辦,比如說從資料庫中提取的ID和String,不能自動的繫結上去

為了實現在android的spinner實現取VALUE值和TEXT值,我嘗試過好些辦法,在網上查的資料,都是說修改介面卡,剛開始我也是通過修改介面卡的方法來做的,但是如果一個activity有多個spinner,就需要多宣告幾個介面卡的全域性變數。後面檢視介面卡的原始碼發現,其實沒有必要修改介面卡,直接往介面卡裡面傳物件,然後重寫物件的toString()方法就可以簡單解決。閒話少說,貼程式碼:

先宣告一個物件,並重寫物件的toString()。

public class CItem {

 private String ID = "";
 private String Value = "";

 public CItem () {
  ID = "";
  Value = "";
 }

 public CItem (String _ID, String _Value) {
  ID = _ID;
  Value = _Value;
 }

 @Override
 public String toString() {           //為什麼要重寫toString()呢?因為介面卡在顯示資料的時候,如果傳入介面卡的物件不是字串的情況下,直接就使用物件.toString()
  // TODO Auto-generated method stub
  return Value;
 }

 public String GetID() {
  return ID;
 }

 public String GetValue() {
  return Value;
 }
}

然後宣告物件例項並加入到arraylist裡面,並設定spinner的介面卡

Spinner Sp = (Spinner).............//

List<CItem > lst = new ArrayList<CItem>();

CItem  ct = new CItem ("1","測試");

lst.Add(ct);;

ArrayAdapter<CItem > Adapter = new ArrayAdapter<CItem>(context,
    android.R.layout.simple_spinner_item, lst);

Sp.SetAdapter(Adapter);

取值:

如果取TEXT值則可以直接取:Sp.getSelectedItem.ToString()或者:((CItem)Sp.getSelectedItem). GetValue() ;

如果去Value值則可以這樣取:((CItem)Sp.getSelectedItem).GetID();