使用带有Spinner元素的entryValues

Yus*_*Ali 6 android android-spinner

我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>
Run Code Online (Sandbox Code Playgroud)

只是.如果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" />
Run Code Online (Sandbox Code Playgroud)

当我在上面使用以下时.

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

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

小智 14

将选定的值保留为a TypedArray并访问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

    }
});
Run Code Online (Sandbox Code Playgroud)