web-dev-qa-db-fra.com

Android obtenir tous les pays sur tableau spinner

J'ai beaucoup cherché, mais le matériel que j'ai trouvé était un peu confus.

Je dois obtenir la liste des pays Android et définir par défaut les paramètres régionaux de l'utilisateur.

Par exemple: J'enregistre un compte utilisateur et je dois insérer le pays. Dans cette liste, tous les pays seront affichés, mais par défaut, mes paramètres régionaux seront affichés.

En ce moment j'ai:

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

Merci à tous pour l'aide!

11
FilipeOS

Quant à moi, j'itère les paramètres régionaux disponibles et ajoute chacun des éléments dans une liste de tableaux. Et bien sûr, je dois ignorer les doublons et les chaînes vides. Voici mon 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

Vous pouvez utiliser 

private static final String DEFAULT_LOCAL = "Portugal";

Ensuite, utilisez-le pour définir la sélection par défaut comme suit.

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

SORTIE:

enter image description here

UPDATE: Créez arrays.xml dans res/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>

Ensuite, utilisez le suivant dans votre activity pour obtenir tous les pays.

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

Pourquoi ne pas le faire comme ça? Il suffit d’obtenir les pays dans une liste, de les trier et de les insérer. 

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

Un sélecteur de pays utile et personnalisable pour vos besoins.

Gradle

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

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

Exemple d'utilisation:

/* 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();

Référence https://Android-arsenal.com/details/1/4390

0
Manoj ahirwar