爲了實如今android的spinner實現取VALUE值和TEXT值,我嘗試過好些辦法,在網上查的資料,都是說修改適配器,剛開始我也是經過修改適配器的方法來作的,可是若是一個activity有多個spinner,就須要多聲明幾個適配器的全局變量。後面查看適配器的源碼發現,其實沒有必要修改適配器,直接往適配器裏面傳對象,而後重寫對象的toString()方法就能夠簡單解決。閒話少說,貼代碼:java
先聲明一個對象,並重寫對象的toString()。android
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() return Value; } public String GetID() { return ID; } public String GetValue() { return Value; } }
而後聲明對象實例並加入到arraylist裏面,並設置spinner的適配器ide
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() ;spa
若是去Value值則能夠這樣取:((CItem)Sp.getSelectedItem).GetID();code
寫的比較簡單,應該可以看的懂。orm