android - 具有键值对的微调器

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

最佳答案

第 1 步:创建将处理键和值的 POJO

  public class Country {
      private String id;
      private String name;
      public Country(String id, String name) {
      this.id = id;
      this.name = name;
     }


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    //to display object as a string in spinner
    @Override
    public String toString() {
        return name;
    }

    @Override
    public boolean equals(Object obj) {
        if(obj instanceof Country){
            Country c = (Country )obj;
            if(c.getName().equals(name) && c.getId()==id ) return true;
        }

        return false;
    }

  }

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

private void setData() {

        ArrayList<Country> countryList = new ArrayList<>();
        //Add countries

        countryList.add(new Country("1", "India"));
        countryList.add(new Country("2", "USA"));
        countryList.add(new Country("3", "China"));
        countryList.add(new Country("4", "UK"));

        //fill data in spinner 
        ArrayAdapter<Country> adapter = new ArrayAdapter<Country>(context, android.R.layout.simple_spinner_dropdown_item, countryList);
        sp_country.setAdapter(adapter);
        sp_country.setSelection(adapter.getPosition(myItem));//Optional to set the selected item.    
    }

第三步:最后在spinner的onitemselected监听器方法中获取选中item的key和value

sp_country.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                 Country country = (Country) parent.getSelectedItem();
                 Toast.makeText(context, "Country ID: "+country.getId()+",  Country Name : "+country.getName(), Toast.LENGTH_SHORT).show();    
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {    
            }
        });

关于android - 具有键值对的微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18656102/

相关文章:

Android、setText 和 setTypeface 不起作用

安卓微调器(下拉): How to know when its clicked (Expanded) and when an item is chosen?

旋转设备时 ScrollView 中出现 java.lang.IllegalStateException

android - 如何阻止旋转器自动选择选项?

Android - 从动态创建的微调器中获取所选项目

javascript - Android Studio 内存不足错误 ViewFlipper

android - (android) 占据整个屏幕宽度的按钮行

android - 如何获取知道用户何时退出应用程序的方法代码

java - 在嵌套数组中提取数组 Java

android - 微调器 : onItemSelected not called when selected item remains the same