微调键和值

时间:2018-02-07 05:36:06

标签: android spinner

我正在创建一个翻译应用程序,用户需要选择目标语言,如果他从旋转器中选择马拉地语,那么马拉地语的值应为'mr',这样我就可以在url中传递该值。 我创建了一个spinner并从strings.xml分配了语言,但我想使用它的简短形式,如hindi,值应为hi,我该如何实现?< / p>

    <string-array name="languages">
    <item>Marathi</item>
    <item>Hindi</item>
    <item>Japanese</item>
    <item>Russian</item>
    <item>Bengali</item>
    <item>Greek</item>
    <item>Gujarati</item>
    <item>Italian</item>
    <item>Malayalam</item>
    <item>German</item>
    <item>Punjabi</item>
    <item>Tamil</item>
    <item>Telugu</item>
    <item>French</item>
    <item>Urdu</item>
</string-array>

5 个答案:

答案 0 :(得分:1)

您可以为上述功能创建Map对象。你可以创建这样的东西。

Map<String, String> map = new HashMap<String, String>();
map.put("Hindi", "Hi");
map.put("Marathi", "Mi");

您可以根据需要反转键和值的顺序。为了填充您的微调器,您可以获取所有键并放入一个列表,然后将其添加到您的微调器。你可以这样做

List<String> l = new ArrayList<String>(map.keySet());

答案 1 :(得分:1)

我会去寻找地图。

1 - 创建语言地图

Map<String, String> languages = new HashMap<>();
        languages.put("hindi", "hi");
        languages.put("arabic", "ar");
        languages.put("english", "en");

2 - 获取所选项目

    String selectedLanguage = mySpinner.getSelectedItem().toString();
    String languageToSend=languages.get(selectedLanguage); //send it to url

答案 2 :(得分:0)

实现这一目标的一种方法是使用@Vivek Mishra建议的Map(在评论中),其中key将是您在spinner中显示的语言名称,value将是您要在URL中传递的语言代码。

地图将如下所示

languageMap.get("Marathi")

现在,当您想要使用时,从微调器获取String,由User选择并通过

获取语言代码值
<string-array name="languages_code">
    <item>mr</item>
    <item>hi</item>
    <!-- Add entries for other languages -->
</string-array>

与当前实现集成的另一个选项是在String.xml中以与语言名称数组相同的顺序添加语言代码数组,并根据所选的微调器索引从语言代码数组中获取相同的索引。

Shift+Tab

答案 3 :(得分:0)

你可以创建像

这样的列表
 List fullname= new ArrayList();
    fullname.add("hindia");
    fullname.add("persian");
    fullname.add("english");
 List urlName= new ArrayList();
    urlName.add("hin");
    urlName.add("per");
    urlName.add("eng");

然后将第一个添加到spiner

   ArrayAdapter dataAdapter = new ArrayAdapter(context, R.layout.spinner_dropdown, fullname);

    // Drop down layout style - list view with radio button
   // dataAdapter.setDropDownViewResource(R.layout.spinner_item);
    // attaching data adapter to spinner
    spinner.setAdapter(dataAdapter);

最后使用实现AdapterView.OnItemSelectedListener和spinner.setOnItemSelectedListener(this); 在代码下面使用等价值:

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, 
long l) {
   String  url=urlName.get(i);
}

答案 4 :(得分:0)

您可以添加一个字符串数组,其短名称对应于您已有的语言数组,并使用“onItemSelected”中的位置获取短语言名称。

以下是获得所需输出的最简单方法:

<强>的strings.xml

    <string-array name="languages">
        <item name="">Marathi</item>
        <item>Hindi</item>
        <item>Japanese</item>
        <item>Russian</item>
        <item>Bengali</item>
        <item>Greek</item>
        <item>Gujarati</item>
        <item>Italian</item>
        <item>Malayalam</item>
        <item>German</item>
        <item>Punjabi</item>
        <item>Tamil</item>
        <item>Telugu</item>
        <item>French</item>
        <item>Urdu</item>
    </string-array>
<string-array name="sr_languages">
        <item name="">Ma</item>
        <item>Hi</item>
        <item>Ja</item>
        <item>Ru</item>
        <item>Be</item>
        <item>Gr</item>
        <item>Gu</item>
        <item>It</item>
        <item>Ma</item>
        <item>Ge</item>
        <item>Pu</item>
        <item>Ta</item>
        <item>Te</item>
        <item>Fr</item>
        <item>Ur</item>
    </string-array>

<强> SpinnerActivity.java

package com.example.sonias.stackoverflowdemos;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Arrays;

public class SpinnerActivity extends AppCompatActivity {
    private Spinner spLanguage;
    private ArrayAdapter<String> spAdapter;
    private String mSelectedLanguage = "";
    private ArrayList<String> LanguagesList;
    private ArrayList<String> srLanguagesList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.spinner);
        spLanguage = (Spinner) findViewById(R.id.spLanguage);
        LanguagesList = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.languages)));
        srLanguagesList = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.sr_languages)));
        spAdapter = new ArrayAdapter<>(SpinnerActivity.this, android.R.layout.simple_list_item_1, LanguagesList);
        spLanguage.setAdapter(spAdapter);
        spLanguage.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String mSelectedTExt = ((TextView) view.findViewById(android.R.id.text1)).getText().toString();
                mSelectedLanguage = srLanguagesList.get(position);
                Toast.makeText(SpinnerActivity.this, "You have selected " + mSelectedTExt + " ( " + mSelectedLanguage + " )", Toast.LENGTH_SHORT).show();
            }

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