6

Spinner在我的LinearLayout. 我想让值不同于可见的值。我不想以编程方式这样做。我想使用下面的数组。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="select">
        <item>a</item>
        <item>b</item>
        <item>c</item>
    </string-array>

    <integer-array name="selectValues">
        <item>1</item>
        <item>2</item>
        <item>3</item>
    </integer-array>

</resources>

简单地。如果a选中的项目,我想得到1整数。有什么办法?

 <Spinner
        android:id="@+id/sSelect"
        android:layout_width="179dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:entries="@array/select"
        android:entryValues="@array/selectValues" />

当我使用上面和下面时。

public void onItemSelected(AdapterView<?> item, View arg1, int sort,
            long arg3) {
        // TODO Auto-generated method stub
        String selectedItem = item.getItemAtPosition(sort).toString();
}

我只能将数据作为字符串而不是值。我可以获得可见的值。

4

1 回答 1

14

将所选值保留为 aTypedArray并访问onItemSelected()方法中的值。

// Keep the selected values as TypedArray
Resources res = getResources();
final TypedArray selectedValues = res
        .obtainTypedArray(R.array.selectValues);

Spinner spinner = ((Spinner) findViewById(R.id.sSelect));
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parent, View view,
            int position, long id) {
        //Get the selected value
        int selectedValue = selectedValues.getInt(position, -1);
        Log.d("demo", "selectedValues = " + selectedValue);
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }
});
于 2013-09-26T19:24:22.543 回答