获取微调器中的项的id

时间:2014-12-12 20:58:45

标签: android android-spinner

我在我的值xml文件中有这个:

<string-array name="ben_country_list">
    <item id="103">India</item>
    <item id="210">Sri Lanka</item>
    <item id="235">United Kingdom</item>
    <item id="76">France</item>
    <item id="216">Switzerland</item>
    <item id="200">Singapore</item>
    <item id="234">United Arab Emirates</item>
</string-array>

我想获得国家/地区的ID。我尝试使用以下代码:

final Spinner mBenCountry = (Spinner) findViewById(R.id.country_spinner);
mBenCountry.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        final long ben_country = mBenCountry.getSelectedItemPosition();
        final long ben_country2 = parentView.getSelectedItemId();
        System.out.println(ben_country); // This one gives me position like 0,1,2...
        System.out.println(ben_country2); // Output: same as above...
    }
});

我想获得所选项目的实际ID。例如,如果用户选择联合王国,那么它应该打印235。我不想该项目的名称。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

为XML创建一个单独的整数数组:

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <integer-array name="ben_country_ids">
          <item>103</item>
          <item>210</item>
          <item>235</item>
          <item>76</item>
          <item>216</item>
          <item>200</item>
          <item>234</item>
     </integer-array>
</resources>

在代码中获取int数组:

final int[] benCountryIds = getResources().getIntArray(R.array.ben_country_ids);

使用positiononItemSelected中的数组中获取正确的ID:

int countryId = benCountryIds[position];

答案 1 :(得分:0)

获得所选项目位置后,您可以执行以下操作:

mBenCountry.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {

        switch (id) {
            case 103 : 
                System.out.println("India");
                break;
            case 210:
                System.out.println("Sri Lanka");
                break;
.
.
.
}

答案 2 :(得分:0)

首先,android string-array XML structure不支持项条目的键/值对。因此,您必须使用其他数据源等:数据库表,CSV文件或其他任何内容。然后将数据加载到某个集合中,然后将其传递给自定义适配器。