在Android中获取某个国家/地区的状态

时间:2014-03-26 05:52:07

标签: android locale states

当用户从Locale类的Java中选择特定国家/地区时,是否可以获取所有状态的列表?我能够从Locale类中获取所有国家/地区的列表。但Locale类不提供状态。他们是其他任何方式吗?或者是否有我可以使用的网络服务?

任何帮助将不胜感激。在此先感谢:)

2 个答案:

答案 0 :(得分:0)

除了使用Google地图API之外,可能还需要您进行全职连接...有一个数据集包含所有本地人GeoNames。您可以在SqLite数据库中使用它。

答案 1 :(得分:-1)

试试这个:

    import java.text.Collator;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Locale;

    public class Country  {

    public void getCountries{
    List<Country> countries = new ArrayList<Country>();

    Locale[] locales = Locale.getAvailableLocales();
    for (Locale locale : locales) {
      String iso = locale.getISO3Country();
      String code = locale.getCountry();
      String name = locale.getDisplayCountry();

      if (!"".equals(iso) && !"".equals(code) && !"".equals(name)) {
        countries.add(new Country(iso, code, name));
      }
    }

    Collections.sort(countries, new CountryComparator());
    for (Country country : countries) {
      System.out.println(country);
    }
  }
}

class CountryComparator implements Comparator<Country> {
  private Comparator comparator;

  CountryComparator() {
    comparator = Collator.getInstance();
  }

  public int compare(Country o1, Country o2) {
    return comparator.compare(o1.name, o2.name);
  }
}

class Country {
  private String iso;

  private String code;

  public String name;

  Country(String iso, String code, String name) {
    this.iso = iso;
    this.code = code;
    this.name = name;
  }

  public String toString() {
    return iso + " - " + code + " - " + name.toUpperCase();
  }
}