2016-03-29 21 views
0

Kullanıcı seçen konumu almak için AutoCompleteTextView kullanın. Benim sorunum, AutoCompleteTextView'un her zaman aynı yapıyı döndürmemesidir.AutoCompleteTextView'den şehir ve ülke alın

Valencia İspanya için örnek, "Valencia, İspanya" (Şehir, Ülke) dönüşüne dönecek, ancak New York için "New York, NY, ABD" dönüşüne dönecektir.

O zaman yalnız şehir ve ülkeye ihtiyacım var ama nasıl anlayacağımı bilmiyorum, acaba api araması var mı, yoksa AutoCompleteTextView bana şehri ve ülkeyi ayırma seçeneğine sahip. bir fikrin peşin, Teşekkür bana yardım edin varsa

@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; 
} 

:

Bu

benim PlacesAutoCompleteAdapter olduğunu.

cevap

1

Her sonuç bir String türüdür. Bu nedenle, her bir sonucu, String sınıfının split() yöntemi yardımı ile parçalara ayırmayı deneyin. Yöntemde normal ifade olarak "," kullanın. Bu yöntem size bir String [] döndürecektir.

Şimdi, String [] öğesindeki öğelerin sayısını alın ve kesinlikle son öğe ülke ve geri kalanı şehir olacak (bunu yukarıdaki soruya verdiğiniz örneğe göre söylüyorum). Son öğeyi ülkeniz olarak alın ve şehir için String [] 'in geriye kalan öğelerini birleştirebilirsiniz (String []' in, örneğinize göre NewYork'taki 2'den fazla öğe içermesi gerekir). Yaylı bir Birleştirme için

Örnek:

zaman String olarak myStrings almak sağlar [];

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

aşağıdaki web sayfasına gitmek, bölme Strings hakkında cevher bilmek için:

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

+0

Bu en iyi seçenek ancak bulunamadı değil! Daha iyi bir seçenek bulursanız beni bilgilendirin. Teşekkürler! – dpulgarin

+0

Elbette, bunu yapacak. –

İlgili konular