2012-07-01 57 views
0


我想獲取微調器的選定值。
首先,我在res /值/字符串創建一個STRING-ARRAY在佈局檢索微調器的綁定值

<string-array name="location"> 
    <item name="AUH">ABU DHABI</item> 
    <item name="AAN">AL AIN</item> 
    <item name="DMM">DAMMAM</item> 
</string-array> 

微調定義:

<Spinner 
     android:id="@+id/spnOrigin" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:entries="@array/location"/> 

現在我需要完成的按鈕,點擊身體,如果用戶選擇了ABU DHABHI,他應該回到AUH。
GETSELECTITEM返回ABU DHABI,而不是背後的價值。如果我嘗試這樣的事情,這種方法可以讓我獲得NAME屬性嗎?

String[] _location =getResources().getStringArray(R.array.location); 

按鈕處理程序:

bttProcess.setOnClickListener(new View.OnClickListener() {   
    public void onClick(View v) {  

}); 
+0

如果你將有很多的城市,它可能是最好的存儲城市名稱和三個字母代碼在SQLiteDatabase中。 – Sam

+0

查看我的更新回答 –

回答

1

我不相信的name屬性是items of a string array有效。

我認爲你最好的選擇是設置另一個數組來獲得數值。您可以執行((AdapterView)getViewById(R.id.spnOrigin)).getSelectedItemPosition()然後從該另一個陣列中查找相關名稱。

+0

是的,你說得對,我確實使用了同樣的方法。但看起來不太好。 – nalaiqChughtai

0

嘗試按照exemple在Android開發者網站使用微調

首先你的活動開始必須實現AdapterView.OnItemSelectedListener。這將提供一個回調方法,在從Spinner中選擇一個項目時通知您的應用程序。

public class SpinnerActivity extends Activity implements OnItemSelectedListener 

其次,你需要通過調用該接口實現註冊:

spinner.setOnItemSelectedListener(this); 

最後內的類 「onItemSelected」 的方法,你可以選擇的項目:

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
    String selected = parent.getItemAtPosition(pos).toString(); 
} 

public void onNothingSelected(AdapterView parent) { 
    // Do nothing. 
} 

使用你的字符串數組像這樣

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="locations"> 
     <item>ABU DHABI</item> 
     <item>AL AIN</item> 
     <item>DAMMAM</item> 
    </string-array> 
</resources> 
+0

這並沒有爲我返回'name'屬性。 – Sam

+0

@Sam我已經使用過了,它對我有用。你應該錯過了一些東西! –

+0

如果您使用作者的字符串數組並選擇第二項,則選擇的字符串是否等於「AL AIN」或「AAN」? – Sam

0

在這種情況下,Spinner需要通過KEY - VALUE PAIR列表綁定, Spinner可以從
獲取值 1. DATABASE
2.靜態字符串數組。
3.通過創建雙資源字符串數組。

FOR第三點:
如果您需要通過資源String Array綁定微調器,則需要創建兩個數組。其中一個將持有KEY [國家名稱],Second Will將包含VALUES [國家簡稱]。

比上點擊按鈕,

bttProcess.setOnClickListener(new View.OnClickListener() {   

    public void onClick(View v) {  
    int position = spinner.getSelectedItemPosition(); 

    Log.i("Code:","Selected Country Code: "+ 
    getStringFromArray(R.array.locations_code, position)); 

}); 

private String getStringFromArray(int id, int index) { 
    try { 
     String[] bases = getResources().getStringArray(id); 
     return bases[index]; 
    } 
    catch (Exception e) { 
     return ""; 
    } 
} 

資源會是什麼樣子,

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="locations"> 
     <item>ABU DHABI</item> 
     <item>AL AIN</item> 
     <item>DAMMAM</item> 
    </string-array> 
    <string-array name="locations_code"> 
     <item>ABU</item> 
     <item>AL</item> 
     <item>DAM</item> 
    </string-array> 
</resources>