2013-09-06 3 views
4

나는 다국어 UI로 작업하고 있습니다. 내 요구 사항은 힌디어로 데이터를 표시하고 싶지만 선택 될 때 더 많은 의사 결정과 비교할 수있는 영어로 표시되어야합니다. 태그가있는 태그와 같습니다.키 - 값 쌍을 사용하는 회 전자

내 자바 코드는

<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> 
+0

그래서 무엇이 문제입니까 ?? – Developer

+0

나는 두 옵션의 드롭 다운을 얻지 못하고 있는데, 나는 {Market-बाजार, Commodity- वस्तु}을 오직 하나의 옵션으로 인쇄하고있다. –

+0

나는 lable, options 및 बाजार가 선택 될 때 두 가지 옵션을 원한다. 반환해야하고 언제 상품을 반환해야합니다 쓴 내가 itemSelected 이벤트에 대한 몇 가지 조치에 대한 적절한 결정을 내릴 수 있도록 –

답변

2

희망이 에서 회 전자

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); 
    } 
을에 데이터를 추가하면

을 도울 수있는 XML로이

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

같은 것입니다

는 회 전자의 선택 값이

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

사용 얻으려면하거나 선택된 값

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); 
    } 
} 
+0

회 전자에 추가하는 방법을 모르겠다. 완전한 코드를 제공 할 수 있습니까? –

+0

선택 항목을 참조하십시오. 스피너의 데이터를 GetClassCode 함수에 전달합니다. 코드 해쉬 해쉬가 시장으로 바운드 및 값으로 설정되므로이 클래스를 선택하면이 클래스가 시장에 반환됩니다. 매우 간단합니다. – Developer

+0

아무 문제가 없습니다. – Developer

1

을 만들기 얻을 setOnItemSelectedListener에게을 사용할 수 있습니다 두 개의 분리 된 문자열을 만들었습니다. 주어진 xml과 같은 언어 단어에 대한 rray, 맞습니까? 그러면 첫 번째 옵션 배열에 대해 ArrayAdapter를 사용하고 스피너에 어댑터를 설정합니다. 두 번째 문자열 배열에서 위치를 가져 오는 위치에 따라 스피너의 항목을 선택합니다.

매우 쉽고 2 개 이상의 언어에서도 작동합니다.

0

조금 오래된 질문이지만 Google에서 검색 할 때 가장 먼저 대답합니다.

나는이 방법을 사용

:

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

모든 언어가 포함되어 있어야합니다

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

그런 다음 문자열 리소스 파일에서 동적으로 키를 얻을 :

는 회 전자에서 지역화 된 값을 취득합니다 strings.xml의 localizedValue에 대한 키 :

बाजार=Market 
1

도와 줄 수있는 HashMap adapter을 만들었습니다. 예제 프로젝트 참조 here

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); 
관련 문제