Получить идентификатор элемента в прядильщике

У меня это в моих значениях 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>

Я хочу получить идентификатор страны. Я пробовал с кодом ниже:

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...
 }
});

Я хочу получить фактические идентификаторы выбранного элемента. Например, если пользователь выбирает объединенное королевство, тогда он должен печатать 235. Я не хочу, чтобы имя этого элемента.

Спасибо за любую помощь.

3 ответа

Сделайте отдельный массив целых чисел в 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 из массива в onItemSelected:

int countryId = benCountryIds[position];


Прежде всего, структура XML-массива android- string не поддерживает пары ключ/значение для записей элементов. Таким образом, вам нужно использовать другой источник данных и т. Д.: таблицу базы данных, файл CSV или что-то еще. Затем загрузите данные в какую-нибудь коллекцию, а затем передайте ее в пользовательский адаптер.


Когда у вас есть выбранная позиция позиции, вы можете сделать это:

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;
.
.
.
}

licensed under cc by-sa 3.0 with attribution.