如何在微调器中获取所选项的ID?

时间:2013-12-29 05:40:32

标签: android spinner

我有一个Spinner,具有以下值/属性。

<Spinner
    android:id="@+id/spin"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:entries="@array/spin_ent"
    android:prompt="@string/spin_prompt" />

<string-array name="spin_ent">
    <item id="2">Two</item>
    <item id="1">One</item>
    <item id="3">Three</item>
    <item id="4">Four</item>
    <item id="5">Five</item>
</string-array>

从代码级别开始,我使用以下代码获取所选ID的{​​{1}}。

item

如果我选择两项,我会收到final long spinID= ((Spinner)findViewById(R.id.spin)).getSelectedItemId(); 而不是0

为什么?

2 个答案:

答案 0 :(得分:1)

实施setOnItemSelectedListener。请查看以下代码,以帮助您更好地理解。

int count;
spinner1 = (Spinner) findViewById(R.id.spin);

spinner1 .setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                // TODO Auto-generated method stub
                spinner1 = parent.getItemAtPosition(position).toString();
                count = position; //this would give you the id of the selected item
            }

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

答案 1 :(得分:0)

确定item标签支持id属性。我在这里发现了问题。它将它的row_id返回到微调器中。

<string-array name="spin_ent">
 <item id="2">Two</item>
 <item id="1">One</item>
 <item id="3">Three</item>
 <item id="4">Four</item>
 <item id="5">Five</item>
</string-array>