从 AutoCompleteTextView 获取城市和国家

Get city and country from AutoCompleteTextView

我使用 AutoCompleteTextView 获取 select 用户的位置。 我的问题是 AutoCompleteTextView 并不总是 return 相同的结构。

西班牙巴伦西亚 return "Valencia, Spain"(城市,国家/地区)示例,但纽约 return "New York, NY, United States".

然后我需要单独的城市和国家,但我不知道如何获得它,我想知道是否有任何 api 电话或 AutoCompleteTextView 有任何选择 return我把城市和乡村分开。

这是我的 PlacesAutoCompleteAdapter:

 @Override
public Filter getFilter() {

    Filter filter = new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            FilterResults filterResults = new Filter.FilterResults();
            if (constraint != null) {
                filterResults.values = PlaceAPI.autocomplete(constraint.toString());
                filterResults.count = resultList.size();
            }

            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            setItems((ArrayList<String>) results.values);
            if (results != null && results.count > 0) {
                notifyDataSetChanged();
            } else {
                notifyDataSetInvalidated();
            }
        }
    };

    return filter;
}

如果有任何想法请帮助我,在此先感谢。

每个结果都是字符串类型。因此,尝试借助 String class 的 split() 方法将每个结果拆分成多个部分。使用“,”作为方法中的正则表达式。此方法将 return 你一个 String[].

现在,获取 String[] 中的元素数量,最后一个元素肯定是国家,其余元素是城市(我是根据您在上面问题中给出的示例说的) .将最后一个元素作为您的国家和城市,然后您可以连接 String[] 的其余元素(如果 String[] 包含超过 2 个元素,根据您的示例,这些元素将位于纽约)。

字符串连接示例:

让我们把 myStrings 作为我的 String[];

for(String string : myStrings) {
    if (string.length() > 2) {
        // concatenate your strings here to form the complete city name
    }
}

要了解有关拆分字符串的更多信息,请访问以下网页:

http://developer.android.com/reference/java/lang/String.html#split(java.lang.String)