0


我想获得微调器的选定值。
首先,我STRING-ARRAY在 res/values/string 中创建了一个

<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返回阿布扎比,而不是背后的价值。如果我尝试这样的事情,这种方法可以让我获得 NAME 属性吗?

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

按钮处理程序:

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

});
4

3 回答 3

1

我不相信 name 属性对字符串数组的项目有效。

我认为你最好的选择是设置另一个数组来包含其中的值。然后,您可以((AdapterView)getViewById(R.id.spnOrigin)).getSelectedItemPosition()从该其他数组中查找相关名称。

于 2012-07-01T03:49:59.467 回答
0

尝试按照android开发者网站中的示例开始使用 spinner

首先,您的活动必须实施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>
于 2012-07-01T03:50:22.360 回答
0

在这种 Spinner 需要通过 KEY - VALUE PAIR List 绑定的场景中,spinner 可以从
1. DATABASE
2. 静态字符串数组中获取值。
3. 通过创建双资源字符串数组。

第三点:
如果你需要通过资源字符串数组绑定微调器,你需要创建两个数组。一个将包含 KEY [国家名称],第二个将包含 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>
于 2012-09-04T11:13:35.770 回答