使用微调器从国家名称中获取 Android 国家/地区代码

标签 android spinner country-codes

在我的android应用程序中,有一个手机号码验证部分,我可以获取所有国家的字符串数组,我们可以从微调器中选择所有国家/地区名称..并且我也有国家/地区代码..我需要的是当用户选择时来自 spinner 的国家名称 .. 其特定的 ISD cde 未显示在编辑文本中 ... 我需要为此做什么

我正在付出我所做的

<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" />

最佳答案

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", "🇦🇫"));
        arrayList.add(new CountryModel("al", "Albania", "+355", "🇦🇱"));
        arrayList.add(new CountryModel("dz", "Algeria", "+213", "🇩🇿"));
        arrayList.add(new CountryModel("as", "American Samoa", "+1684", "🇦🇸"));
        arrayList.add(new CountryModel("ad", "Andorra", "+376", "🇦🇩"));
        arrayList.add(new CountryModel("ao", "Angola", "+244", "🇦🇴"));
        arrayList.add(new CountryModel("ai", "Anguilla", "+1264", "🇦🇮"));
        arrayList.add(new CountryModel("aq", "Antarctica", "+672", "🇦🇶"));
        arrayList.add(new CountryModel("ag", "Antigua and Barbuda", "+1268", "🇦🇬"));
        arrayList.add(new CountryModel("ar", "Argentina", "+54", "🇦🇷"));
        arrayList.add(new CountryModel("am", "Armenia", "+374", "🇦🇲"));
        arrayList.add(new CountryModel("aw", "Aruba", "+297", "🇦🇼"));
        arrayList.add(new CountryModel("au", "Australia", "+61", "🇦🇺"));
        arrayList.add(new CountryModel("at", "Austria", "+43", "🇦🇹"));
        arrayList.add(new CountryModel("az", "Azerbaijan", "+994", "🇦🇿"));
        arrayList.add(new CountryModel("bs", "Bahamas", "+1242", "🇧🇸"));
        arrayList.add(new CountryModel("bh", "Bahrain", "+973", "🇧🇭"));
        arrayList.add(new CountryModel("bd", "Bangladesh", "+880", "🇧🇩"));
        arrayList.add(new CountryModel("bb", "Barbados", "+1242", "🇧🇧"));
        arrayList.add(new CountryModel("by", "Belarus", "+375", "🇧🇾"));
        arrayList.add(new CountryModel("be", "Belgium", "+32", "🇧🇪"));
        arrayList.add(new CountryModel("bz", "Belize", "+501", "🇧🇿"));
        arrayList.add(new CountryModel("bj", "Benin", "+229", "🇧🇯"));
        arrayList.add(new CountryModel("bm", "Bermuda", "+1441", "🇧🇲"));
        arrayList.add(new CountryModel("bt", "Bhutan", "+975", "🇧🇹"));
        arrayList.add(new CountryModel("bo", "Bolivia", "+591", "🇧🇴"));
        arrayList.add(new CountryModel("ba", "Bosnia And Herzegovina", "+387", "🇧🇦"));
        arrayList.add(new CountryModel("bw", "Botswana", "+267", "🇧🇼"));
        arrayList.add(new CountryModel("br", "Brazil", "+55", "🇧🇷"));
        arrayList.add(new CountryModel("io", "British Indian Ocean Territory", "+246", "🇮🇴"));
        arrayList.add(new CountryModel("vg", "British Virgin Islands", "+1284", "🇻🇬"));
        arrayList.add(new CountryModel("bn", "Brunei Darussalam", "+673", "🇧🇳"));
        arrayList.add(new CountryModel("bg", "Bulgaria", "+359", "🇧🇬"));
        arrayList.add(new CountryModel("bf", "Burkina Faso", "+226", "🇧🇫"));
        arrayList.add(new CountryModel("bi", "Burundi", "+257", "🇧🇮"));
        arrayList.add(new CountryModel("kh", "Cambodia", "+855", "🇰🇭"));
        arrayList.add(new CountryModel("cm", "Cameroon", "+237", "🇨🇲"));
        arrayList.add(new CountryModel("ca", "Canada", "+1", "🇨🇦"));
        arrayList.add(new CountryModel("cv", "Cape Verde", "+238", "🇨🇻"));
        arrayList.add(new CountryModel("ky", "Cayman Islands", "+345", "🇰🇾"));
        arrayList.add(new CountryModel("cf", "Central African Republic", "+236", "🇨🇫"));
        arrayList.add(new CountryModel("td", "Chad", "+235", "🇹🇩"));
        arrayList.add(new CountryModel("cl", "Chile", "+56", "🇨🇱"));
        arrayList.add(new CountryModel("cn", "China", "+86", "🇨🇳"));
        arrayList.add(new CountryModel("cx", "Christmas Island", "+61", "🇨🇽"));
        arrayList.add(new CountryModel("cc", "Cocos (keeling) Islands", "+61", "🇨🇨"));
        arrayList.add(new CountryModel("co", "Colombia", "+57", "🇨🇴"));
        arrayList.add(new CountryModel("km", "Comoros", "+269", "🇰🇲"));
        arrayList.add(new CountryModel("ck", "Cook Islands", "+682", "🇨🇰"));
        arrayList.add(new CountryModel("cr", "Costa Rica", "+506", "🇨🇷"));
        arrayList.add(new CountryModel("hr", "Croatia", "+385", "🇭🇷"));
        arrayList.add(new CountryModel("cu", "Cuba", "+53", "🇨🇺"));
        arrayList.add(new CountryModel("cy", "Cyprus", "+357", "🇨🇾"));
        arrayList.add(new CountryModel("cz", "Czech Republic", "+420", "🇨🇿"));
        arrayList.add(new CountryModel("ci", "Côte D'ivoire", "+225", "🇨🇮"));
        arrayList.add(new CountryModel("cd", "Democratic Republic of the Congo", "+243", "🇨🇩"));
        arrayList.add(new CountryModel("dk", "Denmark", "+45", "🇩🇰"));
        arrayList.add(new CountryModel("dj", "Djibouti", "+253", "🇩🇯"));
        arrayList.add(new CountryModel("dm", "Dominica", "+1767", "🇩🇲"));
        arrayList.add(new CountryModel("do", "Dominican Republic", "+1849", "🇩🇴"));
        arrayList.add(new CountryModel("ec", "Ecuador", "+593", "🇪🇨"));
        arrayList.add(new CountryModel("eg", "Egypt", "+20", "🇪🇬"));
        arrayList.add(new CountryModel("sv", "El Salvador", "+503", "🇸🇻"));
        arrayList.add(new CountryModel("gq", "Equatorial Guinea", "+240", "🇬🇶"));
        arrayList.add(new CountryModel("er", "Eritrea", "+291", "🇪🇷"));
        arrayList.add(new CountryModel("ee", "Estonia", "+372", "🇪🇪"));
        arrayList.add(new CountryModel("et", "Ethiopia", "+251", "🇪🇹"));
        arrayList.add(new CountryModel("fk", "Falkland Islands (malvinas)", "+500", "🇫🇰"));
        arrayList.add(new CountryModel("fo", "Faroe Islands", "+298", "🇫🇴"));
        arrayList.add(new CountryModel("fj", "Fiji", "+679", "🇫🇯"));
        arrayList.add(new CountryModel("fi", "Finland", "+358", "🇫🇮"));
        arrayList.add(new CountryModel("fr", "France", "+33", "🇫🇷"));
        arrayList.add(new CountryModel("gf", "French Guiana", "+594", "🇬🇫"));
        arrayList.add(new CountryModel("pf", "French Polynesia", "+689", "🇵🇫"));
        arrayList.add(new CountryModel("ga", "Gabon", "+241", "🇬🇦"));
        arrayList.add(new CountryModel("gm", "Gambia", "+220", "🇬🇲"));
        arrayList.add(new CountryModel("ge", "Georgia", "+995", "🇬🇪"));
        arrayList.add(new CountryModel("de", "Germany", "+49", "🇩🇪"));
        arrayList.add(new CountryModel("gh", "Ghana", "+233", "🇬🇭"));
        arrayList.add(new CountryModel("gi", "Gibraltar", "+350", "🇬🇮"));
        arrayList.add(new CountryModel("gr", "Greece", "+30", "🇬🇷"));
        arrayList.add(new CountryModel("gl", "Greenland", "+299", "🇬🇱"));
        arrayList.add(new CountryModel("gd", "Grenada", "+1473", "🇬🇩"));
        arrayList.add(new CountryModel("gp", "Guadeloupe", "+590", "🇬🇵"));
        arrayList.add(new CountryModel("gu", "Guam", "+1671", "🇬🇺"));
        arrayList.add(new CountryModel("gt", "Guatemala", "+502", "🇬🇹"));
        arrayList.add(new CountryModel("gg", "Guernsey", "+44", "🇬🇬"));
        arrayList.add(new CountryModel("gn", "Guinea", "+224", "🇬🇳"));
        arrayList.add(new CountryModel("gw", "Guinea-Bissau", "+245", "🇬🇼"));
        arrayList.add(new CountryModel("gy", "Guyana", "+592", "🇬🇾"));
        arrayList.add(new CountryModel("ht", "Haiti", "+509", "🇭🇹"));
        arrayList.add(new CountryModel("va", "Holy See (Vatican City State)", "+379", "🇻🇦"));
        arrayList.add(new CountryModel("hn", "Honduras", "+504", "🇭🇳"));
        arrayList.add(new CountryModel("hk", "Hong Kong", "+852", "🇭🇰"));
        arrayList.add(new CountryModel("hu", "Hungary", "+36", "🇭🇺"));
        arrayList.add(new CountryModel("is", "Iceland", "+354", "🇮🇸"));
        arrayList.add(new CountryModel("in", "India", "+91", "🇮🇳"));
        arrayList.add(new CountryModel("id", "Indonesia", "+62", "🇮🇩"));
        arrayList.add(new CountryModel("ir", "Iran", "+98", "🇮🇷"));
        arrayList.add(new CountryModel("iq", "Iraq", "+964", "🇮🇶"));
        arrayList.add(new CountryModel("ie", "Ireland", "+353", "🇮🇪"));
        arrayList.add(new CountryModel("im", "Isle Of Man", "+44", "🇮🇲"));
        arrayList.add(new CountryModel("il", "Israel", "+972", "🇮🇱"));
        arrayList.add(new CountryModel("it", "Italy", "+39", "🇮🇹"));
        arrayList.add(new CountryModel("jm", "Jamaica", "+1876", "🇯🇲"));
        arrayList.add(new CountryModel("jp", "Japan", "+81", "🇯🇵"));
        arrayList.add(new CountryModel("je", "Jersey", "+44", "🇯🇪"));
        arrayList.add(new CountryModel("jo", "Jordan", "+962", "🇯🇴"));
        arrayList.add(new CountryModel("kz", "Kazakhstan", "+7", "🇰🇿"));
        arrayList.add(new CountryModel("ke", "Kenya", "+254", "🇰🇪"));
        arrayList.add(new CountryModel("ki", "Kiribati", "+686", "🇰🇮"));
        arrayList.add(new CountryModel("xk", "Kosovo", "+383", "🇽🇰"));
        arrayList.add(new CountryModel("kw", "Kuwait", "+965", "🇰🇼"));
        arrayList.add(new CountryModel("kg", "Kyrgyzstan", "+996", "🇰🇬"));
        arrayList.add(new CountryModel("la", "Lao People's Democratic Republic", "+856", "🇱🇦"));
        arrayList.add(new CountryModel("lv", "Latvia", "+371", "🇱🇻"));
        arrayList.add(new CountryModel("lb", "Lebanon", "+961", "🇱🇧"));
        arrayList.add(new CountryModel("ls", "Lesotho", "+266", "🇱🇸"));
        arrayList.add(new CountryModel("lr", "Liberia", "+231", "🇱🇷"));
        arrayList.add(new CountryModel("ly", "Libya", "+218", "🇱🇾"));
        arrayList.add(new CountryModel("li", "Liechtenstein", "+423", "🇱🇮"));
        arrayList.add(new CountryModel("lt", "Lithuania", "+370", "🇱🇹"));
        arrayList.add(new CountryModel("lu", "Luxembourg", "+352", "🇱🇺"));
        arrayList.add(new CountryModel("mo", "Macao Sar China", "+853", "🇲🇴"));
        arrayList.add(new CountryModel("mk", "Macedonia", "+389", "🇲🇰"));
        arrayList.add(new CountryModel("mg", "Madagascar", "+261", "🇲🇬"));
        arrayList.add(new CountryModel("mw", "Malawi", "+265", "🇲🇼"));
        arrayList.add(new CountryModel("my", "Malaysia", "+60", "🇲🇾"));
        arrayList.add(new CountryModel("mv", "Maldives", "+960", "🇲🇻"));
        arrayList.add(new CountryModel("ml", "Mali", "+223", "🇲🇱"));
        arrayList.add(new CountryModel("mt", "Malta", "+356", "🇲🇹"));
        arrayList.add(new CountryModel("mh", "Marshall Islands", "+692", "🇲🇭"));
        arrayList.add(new CountryModel("mq", "Martinique", "+596", "🇲🇶"));
        arrayList.add(new CountryModel("mr", "Mauritania", "+222", "🇲🇷"));
        arrayList.add(new CountryModel("mu", "Mauritius", "+230", "🇲🇺"));
        arrayList.add(new CountryModel("yt", "Mayotte", "+262", "🇾🇹"));
        arrayList.add(new CountryModel("mx", "Mexico", "+52", "🇲🇽"));
        arrayList.add(new CountryModel("fm", "Micronesia", "+691", "🇫🇲"));
        arrayList.add(new CountryModel("md", "Moldova", "+373", "🇲🇩"));
        arrayList.add(new CountryModel("mc", "Monaco", "+377", "🇲🇨"));
        arrayList.add(new CountryModel("mn", "Mongolia", "+976", "🇲🇳"));
        arrayList.add(new CountryModel("me", "Montenegro", "+382", "🇲🇪"));
        arrayList.add(new CountryModel("ms", "Montserrat", "+1664", "🇲🇸"));
        arrayList.add(new CountryModel("ma", "Morocco", "+212", "🇲🇦"));
        arrayList.add(new CountryModel("mz", "Mozambique", "+258", "🇲🇿"));
        arrayList.add(new CountryModel("mm", "Myanmar (Burma)", "+95", "🇲🇲"));
        arrayList.add(new CountryModel("na", "Namibia", "+264", "🇳🇦"));
        arrayList.add(new CountryModel("nr", "Nauru", "+674", "🇳🇷"));
        arrayList.add(new CountryModel("np", "Nepal", "+977", "🇳🇵"));
        arrayList.add(new CountryModel("nl", "Netherlands", "+31", "🇳🇱"));
        arrayList.add(new CountryModel("nc", "New Caledonia", "+687", "🇳🇨"));
        arrayList.add(new CountryModel("nz", "New Zealand", "+64", "🇳🇿"));
        arrayList.add(new CountryModel("ni", "Nicaragua", "+505", "🇳🇮"));
        arrayList.add(new CountryModel("ne", "Niger", "+227", "🇳🇪"));
        arrayList.add(new CountryModel("ng", "Nigeria", "+234", "🇳🇬"));
        arrayList.add(new CountryModel("nu", "Niue", "+683", "🇳🇺"));
        arrayList.add(new CountryModel("nf", "Norfolk Island", "+1670", "🇳🇫"));
        arrayList.add(new CountryModel("kp", "North Korea", "+672", "🇰🇵"));
        arrayList.add(new CountryModel("mp", "Northern Mariana Islands", "+850", "🇲🇵"));
        arrayList.add(new CountryModel("no", "Norway", "+47", "🇳🇴"));
        arrayList.add(new CountryModel("om", "Oman", "+968", "🇴🇲"));
        arrayList.add(new CountryModel("pk", "Pakistan", "+92", "🇵🇰"));
        arrayList.add(new CountryModel("pw", "Palau", "+680", "🇵🇼"));
        arrayList.add(new CountryModel("ps", "Palestinian Territory, Occupied", "+970", "🇵🇸"));
        arrayList.add(new CountryModel("pa", "Panama", "+507", "🇵🇦"));
        arrayList.add(new CountryModel("pg", "Papua New Guinea", "+675", "🇵🇬"));
        arrayList.add(new CountryModel("py", "Paraguay", "+595", "🇵🇾"));
        arrayList.add(new CountryModel("pe", "Peru", "+51", "🇵🇪"));
        arrayList.add(new CountryModel("ph", "Philippines", "+63", "🇵🇭"));
        arrayList.add(new CountryModel("pn", "Pitcairn Islands", "+870", "🇵🇳"));
        arrayList.add(new CountryModel("pl", "Poland", "+48", "🇵🇱"));
        arrayList.add(new CountryModel("pt", "Portugal", "+351", "🇵🇹"));
        arrayList.add(new CountryModel("pr", "Puerto Rico", "+1939", "🇵🇷"));
        arrayList.add(new CountryModel("qa", "Qatar", "+974", "🇶🇦"));
        arrayList.add(new CountryModel("cg", "Republic of the Congo - Brazzaville", "+242", "🇨🇬"));
        arrayList.add(new CountryModel("ro", "Romania", "+40", "🇷🇴"));
        arrayList.add(new CountryModel("ru", "Russian Federation", "+7", "🇷🇺"));
        arrayList.add(new CountryModel("rw", "Rwanda", "+250", "🇷🇼"));
        arrayList.add(new CountryModel("re", "Réunion", "+262", "🇷🇪"));
        arrayList.add(new CountryModel("bl", "Saint Barthélemy", "+590", "🇧🇱"));
        arrayList.add(new CountryModel("sh", "Saint Helena", "+290", "🇸🇭"));
        arrayList.add(new CountryModel("kn", "Saint Kitts & Nevis", "+1869", "🇰🇳"));
        arrayList.add(new CountryModel("lc", "Saint Lucia", "+1758", "🇱🇨"));
        arrayList.add(new CountryModel("mf", "Saint Martin", "+590", "🇲🇫"));
        arrayList.add(new CountryModel("pm", "Saint Pierre & Miquelon", "+508", "🇵🇲"));
        arrayList.add(new CountryModel("vc", "Saint Vincent & The Grenadines", "+1784", "🇻🇨"));
        arrayList.add(new CountryModel("ws", "Samoa", "+685", "🇼🇸"));
        arrayList.add(new CountryModel("sm", "San Marino", "+378", "🇸🇲"));
        arrayList.add(new CountryModel("st", "Sao Tome & Principe", "+239", "🇸🇹"));
        arrayList.add(new CountryModel("sa", "Saudi Arabia", "+966", "🇸🇦"));
        arrayList.add(new CountryModel("sn", "Senegal", "+221", "🇸🇳"));
        arrayList.add(new CountryModel("rs", "Serbia", "+381", "🇷🇸"));
        arrayList.add(new CountryModel("sc", "Seychelles", "+248", "🇸🇨"));
        arrayList.add(new CountryModel("sl", "Sierra Leone", "+232", "🇸🇱"));
        arrayList.add(new CountryModel("sg", "Singapore", "+65", "🇸🇬"));
        arrayList.add(new CountryModel("sx", "Sint Maarten", "+1", "🇸🇽"));
        arrayList.add(new CountryModel("sk", "Slovakia", "+421", "🇸🇰"));
        arrayList.add(new CountryModel("si", "Slovenia", "+386", "🇸🇮"));
        arrayList.add(new CountryModel("sb", "Solomon Islands", "+677", "🇸🇧"));
        arrayList.add(new CountryModel("so", "Somalia", "+252", "🇸🇴"));
        arrayList.add(new CountryModel("za", "South Africa", "+27", "🇿🇦"));
        arrayList.add(new CountryModel("gs", "South Africa (South Georgia & South Sandwich Islands)", "+500", "🇬🇸"));
        arrayList.add(new CountryModel("kr", "South Korea", "+82", "🇰🇷"));
        arrayList.add(new CountryModel("ss", "South Sudan", "+211", "🇸🇸"));
        arrayList.add(new CountryModel("es", "Spain", "+34", "🇪🇸"));
        arrayList.add(new CountryModel("lk", "Sri Lanka", "+94", "🇱🇰"));
        arrayList.add(new CountryModel("sd", "Sudan", "+249", "🇸🇩"));
        arrayList.add(new CountryModel("sr", "Suriname", "+597", "🇸🇷"));
        arrayList.add(new CountryModel("sz", "Swaziland", "+268", "🇸🇿"));
        arrayList.add(new CountryModel("se", "Sweden", "+46", "🇸🇪"));
        arrayList.add(new CountryModel("ch", "Switzerland", "+41", "🇨🇭"));
        arrayList.add(new CountryModel("sy", "Syrian Arab Republic", "+963", "🇸🇾"));
        arrayList.add(new CountryModel("tw", "Taiwan", "+886", "🇹🇼"));
        arrayList.add(new CountryModel("tj", "Tajikistan", "+992", "🇹🇯"));
        arrayList.add(new CountryModel("tz", "Tanzania", "+255", "🇹🇿"));
        arrayList.add(new CountryModel("th", "Thailand", "+66", "🇹🇭"));
        arrayList.add(new CountryModel("tl", "Timor-Leste", "+670", "🇹🇱"));
        arrayList.add(new CountryModel("tg", "Togo", "+228", "🇹🇬"));
        arrayList.add(new CountryModel("tk", "Tokelau", "+690", "🇹🇰"));
        arrayList.add(new CountryModel("to", "Tonga", "+676", "🇹🇴"));
        arrayList.add(new CountryModel("tt", "Trinidad & Tobago", "+1868", "🇹🇹"));
        arrayList.add(new CountryModel("tn", "Tunisia", "+216", "🇹🇳"));
        arrayList.add(new CountryModel("tr", "Turkey", "+90", "🇹🇷"));
        arrayList.add(new CountryModel("tm", "Turkmenistan", "+993", "🇹🇲"));
        arrayList.add(new CountryModel("tc", "Turks & Caicos Islands", "+1649", "🇹🇨"));
        arrayList.add(new CountryModel("tv", "Tuvalu", "+688", "🇹🇻"));
        arrayList.add(new CountryModel("ug", "Uganda", "+256", "🇺🇬"));
        arrayList.add(new CountryModel("ua", "Ukraine", "+380", "🇺🇦"));
        arrayList.add(new CountryModel("ae", "United Arab Emirates", "+971", "🇦🇪"));
        arrayList.add(new CountryModel("gb", "United Kingdom", "+44", "🇬🇧"));
        arrayList.add(new CountryModel("us", "United States", "+1", "🇺🇸"));
        arrayList.add(new CountryModel("uy", "Uruguay", "+598", "🇺🇾"));
        arrayList.add(new CountryModel("vi", "US Virgin Islands", "+1340", "🇻🇮"));
        arrayList.add(new CountryModel("uz", "Uzbekistan", "+998", "🇺🇿"));
        arrayList.add(new CountryModel("vu", "Vanuatu", "+678", "🇻🇺"));
        arrayList.add(new CountryModel("ve", "Venezuela", "+58", "🇻🇪"));
        arrayList.add(new CountryModel("vn", "Vietnam", "+84", "🇻🇳"));
        arrayList.add(new CountryModel("wf", "Wallis And Futuna", "+681", "🇼🇫"));
        arrayList.add(new CountryModel("ye", "Yemen", "+967", "🇾🇪"));
        arrayList.add(new CountryModel("zm", "Zambia", "+260", "🇿🇲"));
        arrayList.add(new CountryModel("zw", "Zimbabwe", "+263", "🇿🇼"));
        arrayList.add(new CountryModel("ax", "Åland Islands", "+358", "🇦🇽"));
    }

    class CountryModel {

        private String iso, phoneCode, countryName, countryFlag;

        public CountryModel(String iso, String countryName, String phoneCode, String countryFlag) {
            this.iso = iso;
            this.countryName = countryName;
            this.phoneCode = phoneCode;
            this.countryFlag = countryFlag;
        }

        public String getIso() {
            return iso;
        }

        public void setIso(String iso) {
            this.iso = iso;
        }

        public String getPhoneCode() {
            return phoneCode;
        }

        public void setPhoneCode(String phoneCode) {
            this.phoneCode = phoneCode;
        }

        public String getCountryName() {
            return countryName;
        }

        public void setCountryName(String countryName) {
            this.countryName = countryName;
        }

        public String getCountryFlag() {
            return countryFlag;
        }

        public void setCountryFlag(String countryFlag) {
            this.countryFlag = countryFlag;
        }
    }

    public class CountryCodeAdapter extends ArrayAdapter<CountryModel> {
        private LayoutInflater inflater;
        private Context context;
        private ArrayList<CountryModel> arrayList;
        private int resource;

        public CountryCodeAdapter(@NonNull Context context, ArrayList<CountryModel> arrayList) {
            super(context, 0, arrayList);
            this.inflater = LayoutInflater.from(context);
            this.context = context;
            this.arrayList = arrayList;
        }

        public CountryCodeAdapter(@NonNull Context context, @LayoutRes int resource, ArrayList<CountryModel> arrayList) {
            super(context, resource, 0, arrayList);
            this.inflater = LayoutInflater.from(context);
            this.context = context;
            this.arrayList = arrayList;
            this.resource = resource;
        }

        @Override
        public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
            return createItemView(position, convertView, parent);
        }

        @Override
        public @NonNull
        View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
            return createItemView(position, convertView, parent);
        }

        private View createItemView(int position, View convertView, ViewGroup parent) {

            final View view;

            CountryModel model = arrayList.get(position);

            if (resource == 0) {
                LinearLayoutCompat rootLayout = new LinearLayoutCompat(context);
                rootLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
                rootLayout.setBackgroundColor(Color.WHITE);

                AppCompatTextView ccTextView = new AppCompatTextView(context);
                ccTextView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
                ccTextView.setBackgroundColor(Color.WHITE);
                ccTextView.setTextColor(Color.BLACK);
                ccTextView.setPadding(10, 5, 10, 5);
                ccTextView.setTextSize(15);
                ccTextView.setText(model.getCountryFlag() + "  " + model.getCountryName() + "  (" + model.getPhoneCode() + ")");
                rootLayout.addView(ccTextView);
                view = rootLayout;
            } else {
                view = inflater.inflate(resource, parent, false);
                AppCompatTextView tvCountry = (AppCompatTextView) view.findViewById(R.id.tvCountry);
                tvCountry.setText(model.getCountryFlag() + "  " + model.getCountryName() + "  (" + model.getPhoneCode() + ")");
            }

            return view;
        }
    }
}

spinner_country_code.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:orientation="vertical">

    <android.support.v7.widget.AppCompatTextView
        android:id="@+id/tvCountry"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@null"
        android:paddingLeft="9dp"
        android:paddingTop="3dp"
        android:paddingRight="9dp"
        android:paddingBottom="3dp"
        android:textColor="@android:color/black"
        android:textColorHint="@android:color/black"
        android:textSize="15sp"
        tools:text="Spinner Default Title" />

</android.support.v7.widget.LinearLayoutCompat>

在 XML 中使用类

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@android:color/white"
    tools:context=".MainActivity">

    <com.ketan.ramani.CountryCodeSpinner
        android:id="@+id/ccs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spinnerMode="dropdown"/>

</LinearLayout>

在 JAVA 中使用类

private CountryCodeSpinner ccs;
ccs = findViewById(R.id.ccs);
ccs.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        CountryCodeSpinner.CountryModel model = (CountryCodeSpinner.CountryModel) parent.getAdapter().getItem(position);
        Log.e("KetanRamani", ": " + model.getPhoneCode());
    }

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

    }
});

使用以下代码获取国家/地区代码值

CountryCodeSpinner.CountryModel model = (CountryCodeSpinner.CountryModel) ccs.getSelectedItem();
Log.e("KetanRamani", ": " + model.getPhoneCode() + " " + model.getCountryName());

OUTPUT

关于使用微调器从国家名称中获取 Android 国家/地区代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24360946/

相关文章:

android - 在 Android 上按下主页按钮时,有什么办法可以退出应用程序吗?

android - 知道 API 是由我们的应用程序还是第三方应用程序调用的?

java - 我想显示字符串数组的特定部分而不是其他部分。字符串数组用于国家/地区、国家/地区代码和每个国家/地区的 ISO

android - 从微调器中检索选定的项目?

linux - 系统定义的国家列表?

swift - 在选择器列表 SwiftUI 上添加搜索栏

android - 我将如何更新多图表 ListView 中的图表?

Android - 如果我制作新版本的应用程序以在我自己的设备上进行测试,我应该更改版本代码/版本名称吗?

微调器导致 Android 应用程序在开始时崩溃

php - 如何将国家代码转换为国家名称