Я получаю данные (List
) от API, и я пытаюсь обновить свои AutcompleteTextView
этими данными.AutocompleteTextView не обновляется динамически
Это, как я в настоящее время сделать:
У меня есть TextWatcher
, который называет метод, чтобы получить данные в afterTextChanged
, поэтому каждый раз, когда пользователь прекращает вводить метод называется, и адаптер уведомляется `` notifyDataSetChanged :
//in onCreate
addressAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,suggestions_address);
at_address.setAdapter(addressAdapter);
...
@Override
public void afterTextChanged(Editable s) {
autoComplete(s);
addressAdapter.notifyDataSetChanged();
//suggestions_address is the updated list, and when I print it I can see the
//results so it is not empty
Log.i("addresses",suggestions_address.toString());
}
...
class SuggestionQueryListener implements ResultListener<List<String>> {
@Override
public void onCompleted(List<String> data, ErrorCode error) {
if (error != ErrorCode.NONE) {
Toast.makeText(MainActivity2.this,error.toString(),Toast.LENGTH_LONG).show();
} else {
suggestions_address.clear();
for(int i = 0;i<data.size();i++){
suggestions_address.add(data.get(i));
}
}
}
}
public void autoComplete(CharSequence s) {
try {
String term = s.toString();
TextSuggestionRequest request = null;
request = new TextSuggestionRequest(term).setSearchCenter(new GeoCoordinate(48.844900, 2.395658));
request.execute(new SuggestionQueryListener());
if (request.execute(new SuggestionQueryListener()) != ErrorCode.NONE) {
//Handle request error
//...
}
} catch (IllegalArgumentException ex) {
//
}
}
Но, похоже, адаптер не обновляется, потому что он не отображает предложения, когда я что-то печатаю.
Кроме того, перед этим с AutoCompleteTextView
я сделал это с listView
, с тем же процессом, и все сработало хорошо.
Любые идеи или решения действительно были бы оценены
EDIT: я заметил что-то действительно странное: данные не переплетены к адаптеру, так как adapter#getCount
всегда возвращает 0, даже если список не пуст. Но когда я удаляю at_address.setAdapter(addressAdapter)
, адаптер данных обновляется, и adapter#getCount
возвращает правильное количество элементов.
Я действительно смущен прямо сейчас, пожалуйста, помогите!
Что находится внутри автозаполнения()? –
Это метод, который я использую для получения списка, но он работает нормально, я уверен, что проблема не возникает здесь. (Если он не работал, «Log.i» («адреса», предложения_address.toString()); 'ничего не печатает) –