2016-03-29 13 views
0

Ich benutze eine AutoCompleteTextView, um den Speicherort, der Benutzer auswählen. Mein Problem ist, dass die AutoCompleteTextView nicht immer die gleiche Struktur zurückgeben.Holen Sie sich Stadt und Land von AutoCompleteTextView

Beispiel für Valencia Spanien Rückkehr "Valencia, Spanien" (Stadt, Land) aber für New York Rückkehr "New York, NY, USA".

Dann brauche ich alleine Stadt und Land, aber ich weiß nicht, wie ich es bekommen soll, ich frage mich, ob es einen Api Anruf gibt oder die AutoCompleteTextView irgendeine Option, mich getrennt die Stadt und das Land zurückzugeben.

Das ist mein 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; 
} 

Wenn eine Idee, mit mir bitte, Dank im Voraus helfen.

Antwort

1

Jedes Ergebnis ist ein String-Typ. Versuchen Sie also, jedes Ergebnis mithilfe der split() - Methode der String-Klasse in Teile aufzuteilen. Verwenden Sie "," als regulären Ausdruck in der Methode. Diese Methode gibt Ihnen einen String [] zurück.

Jetzt die Anzahl der Elemente in der Zeichenfolge [] und sicherlich das letzte Element wird das Land sein und der Rest wird die Stadt sein (ich sage das nach dem Beispiel, das Sie in Ihrer Frage oben gegeben haben). Nehmen Sie das letzte Element als Ihr Land und für die Stadt können Sie dann die restlichen Elemente des Strings [] verketten (falls der String [] mehr als 2 Elemente enthält, die in NewYork entsprechend Ihrem Beispiel sein werden).

Beispiel für Verkettung von Strings:

Lets myStrings als mein String nehmen [];

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

+0

Dies ist nicht die beste Option ist, aber gefunden:

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

Um Erz über Splitting Strings, gehen Sie auf der folgenden Webseite zu kennen! Wenn Sie eine bessere Option finden, informieren Sie mich auch. Vielen Dank! – dpulgarin

+0

Sicher, werde das tun. –

Verwandte Themen