Android Country code from Contry name using spinne

2020-07-31 02:32发布

In my android aplication a mobile number verification part is there for that I gt string array for all cuntries and we can select all countries name from spinner .. and I also have the cuntry codes .. What I need is when user select a cuntry name from spinner .. its particular ISD cde has t display in the edittext ... what I need t do for that

I am giving what I did

<string-array name="country_arrays">
        <item>Afghanistan</item>
        <item>Aland Islands</item>
<item>Albania</item>
<item>Algeria</item>
<item>American Samoa</item>
<item>Andorra</item>
<item>Angola</item>
<item>Anguilla</item>
<item>Antarctica</item>
<item>Antigua and Barbuda</item>
<item>Argentina</item>
<item>Armenia</item>
<item>Aruba</item>
<item>Australia</item>
<item>Austria</item>
<item>Azerbaijan</item>
<item>Bahrain</item>
<item>Bangladesh</item>
<item>Barbados</item>
<item>Belarus</item>
<item>Belgium</item>
<item>Belize</item>
<item>Benin</item>
<item>Bermuda</item>
<item>Bhutan</item>
<item>Bolivia</item>
<item>Bosnia and Herzegovina</item>
<item>Botswana</item>
<item>Bouvet Island</item>
<item>Brazil</item>
<item>British Indian Ocean Territory</item>
<item>British Virgin Islands</item>
<item>Brunei</item>
<item>Bulgaria</item>
<item>Burkina Faso</item>
<item>Burundi</item>
<item>Cambodia</item>
<item>Cameroon</item>
<item>Canada</item>
<item>Cape Verde</item>
<item>Cayman Islands</item>
<item>Central African Republic</item>
<item>Chad</item>
<item>Chile</item>
<item>China</item>
<item>Christmas Island</item>
<item>Cocos (Keeling) Islands</item>
<item>Colombia</item>
<item>Comoros</item>
<item>Congo</item>
<item>Cook Islands</item>
<item>Costa Rica</item>
<item>Cote d\'Ivoire</item>
<item>Croatia</item>
<item>Cuba</item>
<item>Cyprus</item>
<item>Czech Republic</item>
<item>Democratic Republic of the Congo</item>
<item>Denmark</item>
<item>Djibouti</item>
<item>Dominica</item>
<item>Dominican Republic</item>
<item>East Timor</item>
<item>Ecuador</item>
<item>Egypt</item>
<item>El Salvador</item>
<item>Equatorial Guinea</item>
<item>Eritrea</item>
<item>Estonia</item>
<item>Ethiopia</item>
<item>Faeroe Islands</item>
<item>Falkland Islands</item>
<item>Fiji</item>
<item>Finland</item>
<item>Former Yugoslav Republic of Macedonia</item>
<item>France</item>
<item>French Guiana</item>
<item>French Polynesia</item>
<item>French Southern Territories</item>
<item>Gabon</item>
<item>Georgia</item>
<item>Germany</item>
<item>Ghana</item>
<item>Gibraltar</item>
<item>Greece</item>
<item>Greenland</item>
<item>Grenada</item>
<item>Guadeloupe</item>
<item>Guam</item>
<item>Guatemala</item>
<item>Guinea</item>
<item>Guinea-Bissau</item>
<item>Guyana</item>
<item>Haiti</item>
<item>Heard Island and McDonald Islands</item>
<item>Honduras</item>
<item>Hong Kong</item>
<item>Hungary</item>
<item>Iceland</item>
<item>India</item>
<item>Indonesia</item>
<item>Iran</item>
<item>Iraq</item>
<item>Ireland</item>
<item>Israel</item>
<item>Italy</item>
<item>Jamaica</item>
<item>Japan</item>
<item>Jordan</item>
<item>Kazakhstan</item>
<item>Kenya</item>
<item>Kiribati</item>
<item>Kuwait</item>
<item>Kyrgyzstan</item>
<item>Laos</item>
<item>Latvia</item>
<item>Lebanon</item>
<item>Lesotho</item>
<item>Liberia</item>
<item>Libya</item>
<item>Liechtenstein</item>
<item>Lithuania</item>
<item>Luxembourg</item>
<item>Macau</item>
<item>Madagascar</item>
<item>Malawi</item>
<item>Malaysia</item>
<item>Maldives</item>
<item>Mali</item>
<item>Malta</item>
<item>Marshall Islands</item>
<item>Martinique</item>
<item>Mauritania</item>
<item>Mauritius</item>
<item>Mayotte</item>
<item>Mexico</item>
<item>Micronesia</item>
<item>Moldova</item>
<item>Monaco</item>
<item>Mongolia</item>
<item>Montserrat</item>
<item>Morocco</item>
<item>Mozambique</item>
<item>Myanmar</item>
<item>Namibia</item>
<item>Nauru</item>
<item>Nepal</item>
<item>Netherlands</item>
<item>Netherlands Antilles</item>
<item>New Caledonia</item>
<item>New Zealand</item>
<item>Nicaragua</item>
<item>Niger</item>
<item>Nigeria</item>
<item>Niue</item>
<item>Norfolk Island</item>
<item>North Korea</item>
<item>Northern Marianas</item>
<item>Norway</item>
<item>Oman</item>
<item>Pakistan</item>
<item>Palau</item>
<item>Panama</item>
<item>Papua New Guinea</item>
<item>Paraguay</item>
<item>Peru</item>
<item>Philippines</item>
<item>Pitcairn Islands</item>
<item>Poland</item>
<item>Portugal</item>
<item>Puerto Rico</item>
<item>Qatar</item>
<item>Reunion</item>
<item>Romania</item>
<item>Russia</item>
<item>Rwanda</item>
<item>Sqo Tome and Principe</item>
<item>Saint Helena</item>
<item>Saint Kitts and Nevis</item>
<item>Saint Lucia</item>
<item>Saint Pierre and Miquelon</item>
<item>Saint Vincent and the Grenadines</item>
<item>Samoa</item>
<item>San Marino</item>
<item>Saudi Arabia</item>
<item>Senegal</item>
<item>Seychelles</item>
<item>Sierra Leone</item>
<item>Singapore</item>
<item>Slovakia</item>
<item>Slovenia</item>
<item>Solomon Islands</item>
<item>Somalia</item>
<item>South Africa</item>
<item>South Georgia and the South Sandwich Islands</item>
<item>South Korea</item>
<item>Spain</item>
<item>Sri Lanka</item>
<item>Sudan</item>
<item>Suriname</item>
<item>Svalbard and Jan Mayen</item>
<item>Swaziland</item>
<item>Sweden</item>
<item>Switzerland</item>
<item>Syria</item>
<item>Taiwan</item>
<item>Tajikistan</item>
<item>Tanzania</item>
<item>Thailand</item>
<item>The Bahamas</item>
<item>The Gambia</item>
<item>Togo</item>
<item>Tokelau</item>
<item>Tonga</item>
<item>Trinidad and Tobago</item>
<item>Tunisia</item>
<item>Turkey</item>
<item>Turkmenistan</item>
<item>Turks and Caicos Islands</item>
<item>Tuvalu</item>
<item>Virgin Islands</item>
<item>Uganda</item>
<item>Ukraine</item>
<item>United Arab Emirates</item>
<item>United Kingdom</item>
<item>United States</item>
<item>United States Minor Outlying Islands</item>
<item>Uruguay</item>
<item>Uzbekistan</item>
<item>Vanuatu</item>
<item>Vatican City</item>
<item>Venezuela</item>
<item>Vietnam</item>
<item>Wallis and Futuna</item>
<item>Western Sahara</item>
<item>Yemen</item>
<item>Yugoslavia</item>
<item>Zambia</item>
<item>Zimbabwe</item>

</string-array>



<Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:entries="@array/country_arrays"
        android:prompt="@string/country_prompt" />

6条回答
祖国的老花朵
2楼-- · 2020-07-31 03:07

Country Code Picker (CCP) library might help you. It will save you from boilerplate code. You just need to place CountryCodePicker view in your layout xml.

This is CCP view enter image description here.

Download Sample application from PlayStore.

Your view will look like with your phone editText. CCP view

Clicking on CCP will open a dialog with list of country to select from. Here you can search country with country name, code name, phone code.enter image description here Selected country details can be read easily. For more details go to Library's Github page.

This library can give you full number by combining country code and carrier number, but it does not verify the structure of number.

查看更多
兄弟一词,经得起流年.
3楼-- · 2020-07-31 03:09
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;



public class NextActivity extends Activity implements AdapterView.OnItemSelectedListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_next);
        String[] countery = {"Afghanistan","Albania"
                ,"Algeria"
                ,"Andorra"
                ,"Angola"
                ,"Anguilla"
                ,"Antigua & Barbuda"
                ,"Argentina"
                ,"Armenia"
                ,"Australia"
                ,"Austria"
                ,"Azerbaijan"
                ,"Bahamas"
                ,"Bahrain"
                ,"Bangladesh"
                ,"Barbados"
                ,"Belarus"
                ,"Belgium"
                ,"Belize"
                ,"Benin"
                ,"Bermuda"
                ,"Bhutan"
                ,"Bolivia"
                ,"Bosnia & Herzegovina"
                ,"Botswana"
                ,"Brazil"
                ,"Brunei Darussalam"
                ,"Bulgaria"
                ,"Burkina Faso"
                ,"Myanmar/Burma"
                ,"Burundi"
                ,"Cambodia"
                ,"Cameroon"
                ,"Canada"
                ,"Cape Verde"
                ,"Cayman Islands"
                ,"Central African Republic"
                ,"Chad"
                ,"Chile"
                ,"China"
                ,"Colombia"
                ,"Comoros"
                ,"Congo"
                ,"Costa Rica"
                ,"Croatia"
                ,"Cuba"
                ,"Cyprus"
                ,"Czech Republic"
                ,"Democratic Republic of the Congo"
                ,"Denmark"
                ,"Djibouti"
                ,"Dominican Republic"
                ,"Dominica"
                ,"Ecuador"
                ,"Egypt"
                ,"El Salvador"
                ,"Equatorial Guinea"
                ,"Eritrea"
                ,"Estonia"
                ,"Ethiopia"
                ,"Fiji"
                ,"Finland"
                ,"France"
                ,"French Guiana"
                ,"Gabon"
                ,"Gambia"
                ,"Georgia"
                ,"Germany"
                ,"Ghana"
                ,"Great Britain"
                ,"Greece"
                ,"Grenada"
                ,"Guadeloupe"
                ,"Guatemala"
                ,"Guinea"
                ,"Guinea-Bissau"
                ,"Guyana"
                ,"Haiti"
                ,"Honduras"
                ,"Hungary"
                ,"Iceland"
                ,"India"
                ,"Indonesia"
                ,"Iran"
                ,"Iraq"
                ,"Israel and the Occupied Territories"
                ,"Italy"
                ,"Ivory Coast (Cote d'Ivoire)"
                ,"Jamaica"
                ,"Japan"
                ,"Jordan"
                ,"Kazakhstan"
                ,"Kenya"
                ,"Kosovo"
                ,"Kuwait"
                ,"Kyrgyz Republic (Kyrgyzstan)"
                ,"Laos"
                ,"Latvia"
                ,"Lebanon"
                ,"Lesotho"
                ,"Liberia"
                ,"Libya"
                ,"Liechtenstein"
                ,"Lithuania"
                ,"Luxembourg"
                ,"Republic of Macedonia"
                ,"Madagascar"
                ,"Malawi"
                ,"Malaysia"
                ,"Maldives"
                ,"Mali"
                ,"Malta"
                ,"Martinique"
                ,"Mauritania"
                ,"Mauritius"
                ,"Mayotte"
                ,"Mexico"
                ,"Moldova, Republic of Monaco"
                ,"Mongolia"
                ,"Montenegro"
                ,"Montserrat"
                ,"Morocco"
                ,"Mozambique"
                ,"Namibia"
                ,"Nepal"
                ,"Netherlands"
                ,"New Zealand"
                ,"Nicaragua"
                ,"Niger"
                ,"Nigeria"
                ,"Korea, Democratic Republic of (North Korea)"
                ,"Norway"
                ,"Oman"
                ,"Pacific Islands"
                ,"Pakistan"
                ,"Panama"
                ,"Papua New Guinea"
                ,"Paraguay"
                ,"Peru"
                ,"Philippines"
                ,"Poland"
                ,"Portugal"
                ,"Puerto Rico"
                ,"Qatar"
                ,"Reunion"
                ,"Romania"
                ,"Russian Federation"
                ,"Rwanda"
                ,"Saint Kitts and Nevis"
                ,"Saint Lucia"
                ,"Saint Vincent's & Grenadines"
                ,"Samoa"
                ,"Sao Tome and Principe"
                ,"Saudi Arabia"
                ,"Senegal"
                ,"Serbia"
                ,"Seychelles"
                ,"Sierra Leone"
                ,"Singapore"
                ,"Slovak Republic "
                ,"Slovenia"
                ,"Solomon Islands"
                ,"Somalia"
                ,"South Africa"
                ,"Korea, Republic of (South Korea)"
                ,"South Sudan"
                ,"Spain"
                ,"Sri Lanka"
                ,"Sudan"
                ,"Suriname"
                ,"Swaziland"
                ,"Sweden"
                ,"Switzerland"
                ,"Syria"
                ,"Tajikistan"
                ,"Tanzania"
                ,"Thailand"
                ,"Timor Leste"
                ,"Togo"
                ,"Trinidad & Tobago"
                ,"Tunisia"
                ,"Turkey"
                ,"Turkmenistan"
                ,"Turks & Caicos Islands"
                ,"Uganda"
                ,"Ukraine"
                ,"United Arab Emirates"
                ,"United States of America (USA)"
                ,"Uruguay"
                ,"Uzbekistan"
                ,"Venezuela"
                ,"Vietnam"
                ,"Virgin Islands (UK)"
                ,"Virgin Islands (US)"
                ,"Yemen"
                ,"Zambia"
                ,"Zimbabwe"};
        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setOnItemSelectedListener(this);
        ArrayAdapter aa = new ArrayAdapter(this, android.R.layout.simple_spinner_item, country);
        aa.setDropDownViewResource(android.R.layout.simple_spinner_item);
        spinner.setAdapter(aa);
        Button button = (Button) findViewById(R.id.button2);

    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    }

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

    }
}
查看更多
老娘就宠你
4楼-- · 2020-07-31 03:14

Please refer below code it may help you

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);## 
查看更多
爱情/是我丢掉的垃圾
5楼-- · 2020-07-31 03:23

You can declare an array of array into your strings.xml

First declare an array for each country

<string-array name="data01">
    <item name="code">01</item>
    <item name="country">Albania</item>
</string-array>

<string-array name="data02">
    <item name="code">02</item>
    <item name="country">Algeria</item>
</string-array>
<!--
...
-->

Then declare the array of array

<array name="countries">
    <item>@array/data01</item>
    <item>@array/data02</item>
    <!--     ...        -->
</array>

Once this done in your activity you just have to parse this array content and keep references on both countries and codes

Resources r = getResources();
TypedArray countrieCodes = r.obtainTypedArray(R.array.countries);

ArrayList<String> country = new ArrayList<String>();
ArrayList<String> code = new ArrayList<String>();

int cpt = countrieCodes.length();
for (int i = 0; i < cpt; ++i) {
    int id = countrieCodes.getResourceId(i, 0);
    code.add(r.getStringArray(id)[0]);
    country.add(r.getStringArray(id)[1]);
}

countrieCodes.recycle(); 

final ArrayList<String> fCode = code;
final ArrayList<String> fCountry = country;

final Spinner p = (Spinner)findViewById(R.id.spinner1);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, country);
p.setAdapter(dataAdapter);
p.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        String selectedCountry = (String)p.getSelectedItem();
        int selectedPosition = fCountry.indexOf(selectedCountry);
        String correspondingCode = fCode.get(selectedPosition);
        // Here is your corresponding country code
        System.out.println(correspondingCode);
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub
    }
});
查看更多
男人必须洒脱
6楼-- · 2020-07-31 03:24

So you want to display the ISD CODE in each country? it can be done using IF statement or Switch. but sure it will take a lot of code. You can use an array or arrayList like this:

String[] ISD_CODE = {"+639","+123",......} //example only



   public void onItemSelected(AdapterView<?> adapter, View view,
                int position, long id) {
               final String result = ISD_CODE[position];
    }

Of course it must be the same position as in your array of countries but i suggest you must use a HashMap for that.

查看更多
做个烂人
7楼-- · 2020-07-31 03:27
package com.ketan.ramani;

import android.content.Context;
import android.graphics.Color;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.AppCompatSpinner;
import android.support.v7.widget.AppCompatTextView;
import android.support.v7.widget.LinearLayoutCompat;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;

import java.util.ArrayList;

/**
 * Created by Ketan Ramani
 */

public class CountryCodeSpinner extends AppCompatSpinner {

    private ArrayList<CountryModel> arrayList;
    private CountryCodeAdapter countryCodeAdapter;

    public CountryCodeSpinner(Context context) {
        super(context);
    }

    public CountryCodeSpinner(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
        fillCountryList();
        countryCodeAdapter = new CountryCodeAdapter(context, arrayList);
        //countryCodeAdapter = new CountryCodeAdapter(context, R.layout.spinner_country_code, arrayList);
        super.setAdapter(countryCodeAdapter);
    }

    public CountryCodeSpinner(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        fillCountryList();
        countryCodeAdapter = new CountryCodeAdapter(context, arrayList);
        //countryCodeAdapter = new CountryCodeAdapter(context, R.layout.spinner_country_code, arrayList);
        super.setAdapter(countryCodeAdapter);
    }

    private void fillCountryList() {
        //https://emojipedia.org/flags/
        arrayList = new ArrayList<>();
        arrayList.clear();
        arrayList.add(new CountryModel("af", "Afghanistan", "+93", "                                                                    
查看更多
登录 后发表回答