具有键值对的微调器

时间:2013-09-06 10:55:28

标签: android 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>

5 个答案:

答案 0 :(得分:3)

希望这可以帮到你

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

答案 1 :(得分:2)

步骤1:创建 POJO 类,该类将处理键和值

font-size

第2步:准备要在微调器中加载的数据

input[type=text]{
  /* Set width to 40characters */
  width: 40ch;
  /* prevent overflow of container */
  max-width: 100%; 
}

第3步:最后通过微调器的onitemselected侦听器方法获得所选项目的键和值

<input class="w3-input w3-border" name="lastName" type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for last names.." title="Type in a last name">

答案 2 :(得分:1)

你为给定的xml中的语言单词创建了两个单独的字符串数组,对吗? 然后只需使用ArrayAdapter作为第一个选项数组并在spinner中设置适配器。并根据它从第二个字符串数组获取世界的位置选择任何微调器项。

它将非常简单,也适用于超过2种语言。

答案 3 :(得分: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);

答案 4 :(得分:0)

有点老问题,但这是从谷歌搜索时的最佳答案。

我使用了这种方法:

从微调器中获取本地化值:

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

然后从字符串资源文件中动态获取密钥:

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

所有语言都应包含strings.xml中的localizedValue的键:

बाजार=Market