wake-up-neo.com

Android bekommt alle Länder auf Array-Spinner

Ich habe viel gesucht, aber das Zeug, das ich fand, war etwas verwirrt.

Ich muss die Android-Länderliste abrufen und das Benutzergebietsschema als Standard festlegen.

Zum Beispiel: Ich registriere ein Benutzerkonto und muss das Land einfügen. In diesem Spinner werden alle Länder angezeigt, standardmäßig wird jedoch mein Standardgebietsschema angezeigt.

Gerade habe ich:

private Spinner spCountry;
private String array_spinner[];

...

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

Vielen Dank für die Hilfe!

11
FilipeOS

Ich für mich iteriere die verfügbaren Gebietsschemas und füge jedes Element in eine arrayList ein. Und natürlich muss ich Duplikate und leere Zeichenfolgen ignorieren. Hier ist mein Code:

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

Sie können verwenden 

private static final String DEFAULT_LOCAL = "Portugal";

Verwenden Sie dann die Standardauswahl wie folgt.

ArrayAdapter adapter = new ArrayAdapter(this, Android.R.layout.simple_spinner_item, array_spinner);
spCountry.setAdapter(adapter);
spCountry.setSelection(adapter.getPosition(DEFAULT_LOCAL));

AUSGABE:

enter image description here

UPDATE: arrays.xml in res/values erstellen

<?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>

Dann verwenden Sie Folgendes in Ihrer activity, um alle Länder zu erhalten.

array_spinner = getResources().getStringArray(R.array.country_arrays);
6
Ritesh Gune

Warum machst du es nicht so? Die Länder einfach in eine Liste aufnehmen, sortieren und einfügen. 

String[] locales = Locale.getISOCountries();
List<String> countries = new ArrayList<>();
countries.add("**Select Country**");

for (String countryCode : locales) {

        Locale obj = new Locale("", countryCode);

        countries.add(obj.getDisplayCountry());

}
Collections.sort(countries);
countrySpinner.setItems(countries);
0
Hasan Sawan

Ein hilfreicher und anpassbarer Country Picker für Ihre Bedürfnisse.

Gradle

repositories {
    maven { url "https://jitpack.io" }
}

compile 'com.github.ekimual:country-picker-x:1.0.0'

Beispielverwendung:

/* Declare */
CountryPickerDialog countryPicker;

/* Name of your Custom JSON list */
int resourceId = getResources().getIdentifier("country_avail", "raw", getApplicationContext().getPackageName());

countryPicker = new CountryPickerDialog(MainActivity.this, new  CountryPickerCallbacks() {
      @Override
      public void onCountrySelected(Country country, int flagResId) {
            /* Get Country Name: country.getCountryName(context); */
            /* Call countryPicker.dismiss(); to prevent memory leaks */
      }

      /* Set to false if you want to disable Dial Code in the results and true if you want to show it 
         Set to zero if you don't have a custom JSON list of countries in your raw file otherwise use 
         resourceId for your customly available countries */
  }, false, 0);

countryPicker.show();

Referenz https://Android-arsenal.com/details/1/4390

0
Manoj ahirwar