我在我的值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
。我不想该项目的名称。
感谢您的帮助。
答案 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);
使用position
从onItemSelected
中的数组中获取正确的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文件或其他任何内容。然后将数据加载到某个集合中,然后将其传递给自定义适配器。