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!
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);
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:
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);
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);
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();