Я использую Geocoder для получения совпадающих адресов от String.Android AutoCompleteTextView Refreshing
Я пытаюсь отобразить возвращенные адреса в AutoCompleteTextView.
я могу увидеть значение правильно, когда я Log.i("Result:"," "+list_of_addresses);
Поскольку речь идет о динамическом списке загрузке Я зову adapter.NotifyDataSetChanged();
Я использую addTextChangedListener слушать изменения в вводе текста пользователя
Это то, что код выглядит
public class Map extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
final Geocoder gc = new Geocoder(getApplicationContext(), Locale.getDefault());
final ArrayList<String> address_name = new ArrayList<String>();
final AutoCompleteTextView search = (AutoCompleteTextView) findViewById(R.id.search);
search.setThreshold(1);
final ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line,address_name);
search.setAdapter(adapter); //moved this line out of the try block
search.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
List<Address> list = null;
Address address = null;
try {
list = gc.getFromLocationName(s.toString(), 10);
Log.i("List:", ""+list); //CAN see this log
} catch (IOException e) {
e.printStackTrace();
}
for(int i=0; i<list.size(); i++){
address = list.get(i);
address_name.add(address.getFeatureName().toString());
Log.i("Address: ", address.getFeatureName().toString()); //CANto see this Log
}
if(!list.isEmpty()){
list.clear();
}
adapter.notifyDataSetChanged();
search.showDropDown();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
});
}
}
Внутри цикл я не могу увидеть log.i("Addresses:",address.getFeatureName.toString());
Но когда я изменить для условия цикла к i<=list.size()
я получаю выход журнала, но в forcecloses приложения с этой ошибкой java.lang.IndexOutOfBoundsException: Invalid index 10, size is 10
Может быть, поэтому я не удалось увидеть список адресов?
EDIT: Я изменил для условия цикла к i<list.size()
также добавил search.showDropDown()
после уведомления набора данных изменилась.
Любая помощь будет оценена! Спасибо.
изменение состояние до ** i <список.size() ** –
@kalyanpvs сделано! Благодарю. добавлено, что условие также произвело некоторые изменения, такие как добавление search.showDropDown(); проверить правку в OP – user2933671