2016-03-29 137 views
0

我使用AutoCompleteTextView来获取选择用户的位置。 我的问题是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

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

现在,获取String []中元素的数量,最后一个元素当然是国家,剩下的就是城市(根据您在上面的问题中给出的例子,我会这样说)。将最后一个元素作为您的国家和城市,然后可以连接String []的其余元素(根据您的示例,将String []包含2个以上的元素放在NewYork中)。

实施例为字符串的链接:

让我们myStrings作为我的字符串[];

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)

+0

这是不是最好的选择,但找到了!如果你找到更好的选择也告诉我。谢谢! – dpulgarin

+0

当然,会这样做。 –