Android获得阵列微调器上的所有国家/地区

Fil*_*eOS 12 android android-spinner

我搜索了很多,但我找到的东西有点困惑.

我需要获取android国家/地区列表并设置默认用户区域设置.

例如:我正在注册一个用户帐户,我需要插入该国家/地区,该微调器将显示所有国家/地区,但默认情况下将显示为我的默认语言环境.

现在我有:

private Spinner spCountry;
private String array_spinner[];
Run Code Online (Sandbox Code Playgroud)

...

spCountry = (Spinner) findViewById(R.id.spCountry);

array_spinner = new String[1];
array_spinner[0] = "Portugal";

ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, array_spinner);
spCountry.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

谢谢大家的帮助!

小智 33

至于我,我迭代可用的Locales并将每个项添加到arrayList中.当然,我必须忽略重复和空字符串.这是我的代码:

Locale[] locale = Locale.getAvailableLocales();
ArrayList<String> countries = new ArrayList<String>();
String country;
for( Locale loc : locale ){
    country = loc.getDisplayCountry();
    if( country.length() > 0 && !countries.contains(country) ){
        countries.add( country );
    }
}
Collections.sort(countries, String.CASE_INSENSITIVE_ORDER);

Spinner citizenship = (Spinner)findViewById(R.id.input_citizenship);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, countries);
citizenship.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用Set而不是List,因此您只需要检查空字符串,因为Set不能包含重复项. (6认同)

Rit*_*une 7

您可以使用

private static final String DEFAULT_LOCAL = "Portugal";
Run Code Online (Sandbox Code Playgroud)

然后使用它来设置默认选择,如下所示.

ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, array_spinner);
spCountry.setAdapter(adapter);
spCountry.setSelection(adapter.getPosition(DEFAULT_LOCAL));
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

在此输入图像描述

更新: 创建arrays.xmlres/values

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="country_arrays">
        <item>Malaysia</item>
        <item>United States</item>
        <item>Indonesia</item>
        <item>France</item>
        <item>Italy</item>
        <item>Singapore</item>
        <item>New Zealand</item>
        <item>India</item>
        <item>Portugal</item>
    </string-array>

</resources>
Run Code Online (Sandbox Code Playgroud)

然后使用以下内容activity获取所有国家/地区.

array_spinner = getResources().getStringArray(R.array.country_arrays);
Run Code Online (Sandbox Code Playgroud)