Spinner с ключевой стоимостью пары

Я работаю над интерфейсом нескольких языков. Мое требование в spinner Я хочу показать данные на хинди, но когда он будет выбран, он должен вернуться на английский показ, он может сравниться с дальнейшим принятием решений. Точно так же, как тег с тегом.

Мой код Java – это что-то вроде этого

HashMap<String,String> options=new HashMap<String,String>(); String optionsEnglish [] = getResources().getStringArray(R.array.option_array); String optinsHindi[]= getResources().getStringArray(R.array.option_array_hindi); for(int i=0;i<optionsEnglish.length;i++) { options.put(optionsEnglish[i], optinsHindi[i]); } Spinner optionSpinner = (Spinner) findViewById(R.id.optionPicker); ArrayAdapter<HashMap<String, String>> dataAdapter = new ArrayAdapter<HashMap<String,String>>(this, android.R.layout.simple_spinner_item); dataAdapter.add(options); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); optionSpinner.setAdapter(dataAdapter); 

В xml

  <resource> <string-array name="option_array"> <item>Market</item> <item>Commodity</item> </string-array> <string-array name="option_array_hindi"> <item>बाजार</item> <item>वस्तु</item> </string-array> </resources> 

Надеюсь, это поможет вам

Добавить данные в Spinner

 private void setDataInSpinner(Spinner id, int dataArray) { ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, dataArray, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_item); id.setAdapter(adapter); } 

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

 Spinner mySpinner = (Spinner)findViewById(R.id.spinner); String Text = mySpinner.getSelectedItem().toString(); 

Или вы можете использовать setOnItemSelectedListener для получения выбранных значений

 String value = GetClassCode.getCode(Text);//here u have to pass the value that is selected on the spinner 

Создать класс

 public class GetClassCode { static HashMap<String, String> codeHash = new HashMap<String, String>(); static { init(); } public static void init() { codeHash.put("key", "value"); codeHash.put("key", "value"); codeHash.put("key", "value"); codeHash.put("key", "value"); } public static String getCode(String param) { return codeHash.get(param); } } 

Вы создали два отдельных строковых массива для языковых слов, подобных указанному xml, правильно? То просто используйте ArrayAdapter для первого массива опций и установите адаптер в spinner. И при выборе любого элемента счетчика в соответствии с его местоположением выбираем мир из второго массива строк.

Это будет довольно легко и также работать на более чем 2 языках.

Немного старый вопрос, но это находится в верхних ответах при поиске в google.

Я использовал этот метод:

Получите локализованное значение из счетчика:

 String localizedValue = ((Spinner) findViewById(R.id.mySpinner)).getSelectedItem().toString(); 

Затем динамически извлекайте ключ из файла строк:

 String key = (String) getResources().getText(getResources().getIdentifier(localizedValue, "string", "my.package.name")); 

Все языки должны содержать ключ для localizedValue в strings.xml:

 बाजार=Market 

Я создал адаптер HashMap, который может помочь. Также см. Пример проекта здесь

  mapData = new LinkedHashMap<String, String>(); mapData.put("shamu", "Nexus 6"); mapData.put("fugu", "Nexus Player"); mapData.put("volantisg", "Nexus 9 (LTE)"); mapData.put("volantis", "Nexus 9 (Wi-Fi)"); mapData.put("hammerhead", "Nexus 5 (GSM/LTE)"); mapData.put("razor", "Nexus 7 [2013] (Wi-Fi)"); mapData.put("razorg", "Nexus 7 [2013] (Mobile)"); mapData.put("mantaray", "Nexus 10"); mapData.put("occam", "Nexus 4"); mapData.put("nakasi", "Nexus 7 (Wi-Fi)"); mapData.put("nakasig", "Nexus 7 (Mobile)"); mapData.put("tungsten", "Nexus Q"); adapter = new LinkedHashMapAdapter<String, String>(this, android.R.layout.simple_spinner_item, mapData); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner = (Spinner) findViewById(R.id.spinner); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(this);