从AutoCompleteTextView获取城市和国家/地区

时间:2016-03-29 10:01:21

标签: android autocomplete textview location

我使用AutoCompleteTextView来获取选择用户的位置。 我的问题是AutoCompleteTextView并不总是返回相同的结构。

瓦伦西亚西班牙回归的例子"瓦伦西亚,西班牙" (城市,国家),但纽约返回"纽约,纽约,美国"。

然后我需要一个城市和国家,但我不知道如何得到它,我想知道是否有任何api电话或AutoCompleteTextView有任何选择让我分开城市和国家。

这是我的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;
}

如果有任何想法,请帮助我,提前致谢。

1 个答案:

答案 0 :(得分:1)

每个结果都是String类型。因此,尝试通过String类的split()方法将每个结果拆分为多个部分。使用“,”作为方法中的正则表达式。这个方法会返回一个String []。

现在,获取String []中元素的数量,肯定最后一个元素将是国家,其余元素将是城市(我根据你在上面的问题中给出的例子说这个)。把最后一个元素作为你的国家和城市,你可以连接String []的其余元素(如果String []包含多于2个元素,根据你的例子,它将在NewYork中。)

连接字符串的示例:

让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)