2013-12-11 17 views
11

需要項目示例顯示所有國家的國旗和可用性獲得國家移動代碼。Android國家列表與獲得ISO移動代碼的標誌和可用性

+0

你是什麼意思「獲取國家移動代碼的可用性」?每個Android版本支持的國家國旗數量從無增加到增加到超過兩百。無論老版本的Android是否可以顯示標誌,即使使用更新的字體,我也無法告訴您,但可能存在妨礙它的操作系統問題。 – hippietrail

回答

32

您可以從here下載該項目。

我們需要帶有以下代碼的文件。

MainActivity

package com.example.countrieswithflags; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.widget.ListView; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     String[] recourseList=this.getResources().getStringArray(R.array.CountryCodes); 

     final ListView listview = (ListView) findViewById(R.id.listView); 
     listview.setAdapter(new CountriesListAdapter(this, recourseList)); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

我們需要適配器列表

CountriesListAdapter

package com.example.countrieswithflags; 

import java.util.Locale; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class CountriesListAdapter extends ArrayAdapter<String> { 
    private final Context context; 
    private final String[] values; 

    public CountriesListAdapter(Context context, String[] values) { 
     super(context, R.layout.country_list_item, values); 
     this.context = context; 
     this.values = values; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View rowView = inflater.inflate(R.layout.country_list_item, parent, false); 
     TextView textView = (TextView) rowView.findViewById(R.id.txtViewCountryName); 
     ImageView imageView = (ImageView) rowView.findViewById(R.id.imgViewFlag); 

     String[] g=values[position].split(","); 
     textView.setText(GetCountryZipCode(g[1]).trim()); 


     String pngName = g[1].trim().toLowerCase(); 
     imageView.setImageResource(context.getResources().getIdentifier("drawable/" + pngName, null, context.getPackageName())); 
     return rowView; 
    } 

    private String GetCountryZipCode(String ssid){ 
     Locale loc = new Locale("", ssid); 

     return loc.getDisplayCountry().trim(); 
    } 
} 

我們的strings.xml都會有這樣的行

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <string name="app_name">Countries With Flags</string> 
    <string name="action_settings">Settings</string> 
    <string name="hello_world">Hello world!</string> 

    <string-array name="CountryCodes" > 
     <item>93,AF</item> 
     <item>355,AL</item> 
     <item>213,DZ</item> 
     <item>376,AD</item> 
     <item>244,AO</item> 
     <item>54,AR</item> 
     <item>374,AM</item> 
     <item>297,AW</item> 
     <item>61,AU</item> 
     <item>43,AT</item> 
     <item>994,AZ</item> 
     <item>973,BH</item> 
     <item>880,BD</item> 
     <item>375,BY</item> 
     <item>32,BE</item> 
     <item>501,BZ</item> 
     <item>229,BJ</item> 
     <item>975,BT</item> 
     <item>591,BO</item> 
     <item>387,BA</item> 
     <item>267,BW</item> 
     <item>55,BR</item> 
     <item>673,BN</item> 
     <item>359,BG</item> 
     <item>226,BF</item> 
     <item>95,MM</item> 
     <item>257,BI</item> 
     <item>855,KH</item> 
     <item>237,CM</item> 
     <item>1,CA</item> 
     <item>238,CV</item> 
     <item>236,CF</item> 
     <item>235,TD</item> 
     <item>56,CL</item> 
     <item>86,CN</item> 
     <item>61,CX</item> 
     <item>61,CC</item> 
     <item>57,CO</item> 
     <item>269,KM</item> 
     <item>242,CG</item> 
     <item>243,CD</item> 
     <item>682,CK</item> 
     <item>506,CR</item> 
     <item>385,HR</item> 
     <item>53,CU</item> 
     <item>357,CY</item> 
     <item>420,CZ</item> 
     <item>45,DK</item> 
     <item>253,DJ</item> 
     <item>670,TL</item> 
     <item>593,EC</item> 
     <item>20,EG</item> 
     <item>503,SV</item> 
     <item>240,GQ</item> 
     <item>291,ER</item> 
     <item>372,EE</item> 
     <item>251,ET</item> 
     <item>500,FK</item> 
     <item>298,FO</item> 
     <item>679,FJ</item> 
     <item>358,FI</item> 
     <item>33,FR</item> 
     <item>689,PF</item> 
     <item>241,GA</item> 
     <item>220,GM</item> 
     <item>995,GE</item> 
     <item>49,DE</item> 
     <item>233,GH</item> 
     <item>350,GI</item> 
     <item>30,GR</item> 
     <item>299,GL</item> 
     <item>502,GT</item> 
     <item>224,GN</item> 
     <item>245,GW</item> 
     <item>592,GY</item> 
     <item>509,HT</item> 
     <item>504,HN</item> 
     <item>852,HK</item> 
     <item>36,HU</item> 
     <item>91,IN</item> 
     <item>62,ID</item> 
     <item>98,IR</item> 
     <item>964,IQ</item> 
     <item>353,IE</item> 
     <item>44,IM</item> 
     <item>972,IL</item> 
     <item>39,IT</item> 
     <item>225,CI</item> 
     <item>81,JP</item> 
     <item>962,JO</item> 
     <item>7,KZ</item> 
     <item>254,KE</item> 
     <item>686,KI</item> 
     <item>965,KW</item> 
     <item>996,KG</item> 
     <item>856,LA</item> 
     <item>371,LV</item> 
     <item>961,LB</item> 
     <item>266,LS</item> 
     <item>231,LR</item> 
     <item>218,LY</item> 
     <item>423,LI</item> 
     <item>370,LT</item> 
     <item>352,LU</item> 
     <item>853,MO</item> 
     <item>389,MK</item> 
     <item>261,MG</item> 
     <item>265,MW</item> 
     <item>60,MY</item> 
     <item>960,MV</item> 
     <item>223,ML</item> 
     <item>356,MT</item> 
     <item>692,MH</item> 
     <item>222,MR</item> 
     <item>230,MU</item> 
     <item>262,YT</item> 
     <item>52,MX</item> 
     <item>691,FM</item> 
     <item>373,MD</item> 
     <item>377,MC</item> 
     <item>976,MN</item> 
     <item>382,ME</item> 
     <item>212,MA</item> 
     <item>258,MZ</item> 
     <item>264,NA</item> 
     <item>674,NR</item> 
     <item>977,NP</item> 
     <item>31,NL</item> 
     <item>599,AN</item> 
     <item>687,NC</item> 
     <item>64,NZ</item> 
     <item>505,NI</item> 
     <item>227,NE</item> 
     <item>234,NG</item> 
     <item>683,NU</item> 
     <item>850,KP</item> 
     <item>47,NO</item> 
     <item>968,OM</item> 
     <item>92,PK</item> 
     <item>680,PW</item> 
     <item>507,PA</item> 
     <item>675,PG</item> 
     <item>595,PY</item> 
     <item>51,PE</item> 
     <item>63,PH</item> 
     <item>870,PN</item> 
     <item>48,PL</item> 
     <item>351,PT</item> 
     <item>1,PR</item> 
     <item>974,QA</item> 
     <item>40,RO</item> 
     <item>7,RU</item> 
     <item>250,RW</item> 
     <item>590,BL</item> 
     <item>685,WS</item> 
     <item>378,SM</item> 
     <item>239,ST</item> 
     <item>966,SA</item> 
     <item>221,SN</item> 
     <item>381,RS</item> 
     <item>248,SC</item> 
     <item>232,SL</item> 
     <item>65,SG</item> 
     <item>421,SK</item> 
     <item>386,SI</item> 
     <item>677,SB</item> 
     <item>252,SO</item> 
     <item>27,ZA</item> 
     <item>82,KR</item> 
     <item>34,ES</item> 
     <item>94,LK</item> 
     <item>290,SH</item> 
     <item>508,PM</item> 
     <item>249,SD</item> 
     <item>597,SR</item> 
     <item>268,SZ</item> 
     <item>46,SE</item> 
     <item>41,CH</item> 
     <item>963,SY</item> 
     <item>886,TW</item> 
     <item>992,TJ</item> 
     <item>255,TZ</item> 
     <item>66,TH</item> 
     <item>228,TG</item> 
     <item>690,TK</item> 
     <item>676,TO</item> 
     <item>216,TN</item> 
     <item>90,TR</item> 
     <item>993,TM</item> 
     <item>688,TV</item> 
     <item>971,AE</item> 
     <item>256,UG</item> 
     <item>44,GB</item> 
     <item>380,UA</item> 
     <item>598,UY</item> 
     <item>1,US</item> 
     <item>998,UZ</item> 
     <item>678,VU</item> 
     <item>39,VA</item> 
     <item>58,VE</item> 
     <item>84,VN</item> 
     <item>681,WF</item> 
     <item>967,YE</item> 
     <item>260,ZM</item> 
     <item>263,ZW</item> 
    </string-array> 


</resources> 

佈局,我們必須有country_list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 


    <ImageView 
     android:id="@+id/imgViewFlag" 
     android:layout_height="11px" 
     android:layout_width="16px" 
     android:layout_margin="5dp" /> 

    <TextView 
     android:id="@+id/txtViewCountryName" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" /> 

</LinearLayout> 

activity_main.xml中

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 



    <ListView 
     android:id="@+id/listView" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_marginTop="15dp" > 


    </ListView> 

</RelativeLayout> 

你可以找到正確的名稱標誌的鏡像(ISO國家名稱)從here。或者你可以在項目中找到它們(上面給出的鏈接)。

+0

非常感謝這個樣本,但是......爲什麼是RAR? – Egor

+1

))我會上傳github上的紅外版本 –

+0

這是一個很好的解決方案!非常感謝你。 下載鏈接已損壞 –