2012-07-01 3 views
0


Я хочу получить выбранное значение счетчика.
Во-первых, я создал STRING-ARRAY в Рез/значений/строкиПолучение связанного значения счетчика

<string-array name="location"> 
    <item name="AUH">ABU DHABI</item> 
    <item name="AAN">AL AIN</item> 
    <item name="DMM">DAMMAM</item> 
</string-array> 

Spinner Определение в макете:

<Spinner 
     android:id="@+id/spnOrigin" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:entries="@array/location"/> 

Теперь мне нужно завершить кнопку щелчка тело, если пользователь выбирает ABU DHABHI, он должен вернуть AUH.
GETSELECTITEM возвращает ABU DHABI, а не значение, стоящее за этим. Если я попробую что-то вроде этого, может ли этот подход позволить мне получить атрибут NAME?

String[] _location =getResources().getStringArray(R.array.location); 

Кнопка Handler:

bttProcess.setOnClickListener(new View.OnClickListener() {   
    public void onClick(View v) {  

}); 
+0

Если вы собираетесь иметь много городов, было бы лучше, чтобы сохранить название города и трехбуквенный код в SQLiteDatabase. – Sam

+0

см. Мой обновленный ответ –

ответ

1

Я не считаю, что имя атрибута действует на items of a string array.

Я думаю, что лучше всего настроить другой массив, чтобы иметь в нем значения. Вы можете сделать ((AdapterView)getViewById(R.id.spnOrigin)).getSelectedItemPosition(), затем найдите соответствующее имя из этого другого массива.

+0

Да, ты прав, я использовал тот же подход. Но выглядит не очень хорошо. – nalaiqChughtai

0

Попробуйте следовать exemple в андроида сайт разработчиков, чтобы начать использовать Spinner

первую вашу деятельность должны осуществлять AdapterView.OnItemSelectedListener. Это обеспечит метод обратного вызова, который будет уведомлять ваше приложение, когда элемент был выбран из Spinner.

public class SpinnerActivity extends Activity implements OnItemSelectedListener 

Во-вторых вы должны зарегистрироваться для реализации интерфейса по телефону:

spinner.setOnItemSelectedListener(this); 

Наконец в методе "onItemSelected" этого класса, вы можете получить выбранный элемент:

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
    String selected = parent.getItemAtPosition(pos).toString(); 
} 

public void onNothingSelected(AdapterView parent) { 
    // Do nothing. 
} 

используйте свой строковый массив, подобный этому

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="locations"> 
     <item>ABU DHABI</item> 
     <item>AL AIN</item> 
     <item>DAMMAM</item> 
    </string-array> 
</resources> 
+0

Это не возвращает атрибут 'name' для меня. – Sam

+0

@Sam Я уже использовал это, и он работает для меня. Вы должны были пропустить что-то !! –

+0

Если вы используете String-Array автора и выбираете второй элемент, '' String selected' равен '" AL AIN "' или '" AAN "'? – Sam

0

В этом случае, когда Spinner необходимо связать с помощью KEY - VALUE PAIR List, Вращатель может получать значения от
1. БАЗОВАЯ ИНФОРМАЦИЯ
2. Статический массив строк.
3. Создав Bi- Resource String Array.

FOR 3rd Point:
Если вам нужно связать счетчик ресурсом String Array, вам нужно создать два массива. Тот, который будет удерживать КЛЮЧ [НАИМЕНОВАНИЕ стран], второй будет содержать VALUES [Short Code of Countries].

чем на Нажмите кнопку,

bttProcess.setOnClickListener(new View.OnClickListener() {   

    public void onClick(View v) {  
    int position = spinner.getSelectedItemPosition(); 

    Log.i("Code:","Selected Country Code: "+ 
    getStringFromArray(R.array.locations_code, position)); 

}); 

private String getStringFromArray(int id, int index) { 
    try { 
     String[] bases = getResources().getStringArray(id); 
     return bases[index]; 
    } 
    catch (Exception e) { 
     return ""; 
    } 
} 

РЕСУРСЫ будет выглядеть,

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="locations"> 
     <item>ABU DHABI</item> 
     <item>AL AIN</item> 
     <item>DAMMAM</item> 
    </string-array> 
    <string-array name="locations_code"> 
     <item>ABU</item> 
     <item>AL</item> 
     <item>DAM</item> 
    </string-array> 
</resources> 
Смежные вопросы