我從API獲取數據(List
),我試圖用此數據更新我的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
做了這個,使用相同的過程,並且一切正常。
任何意見或解決方案將非常感激
編輯:我注意到一些奇怪的東西:數據未綁定到適配器,因爲adapter#getCount
總是返回0,即使列表不爲空。但是當我刪除at_address.setAdapter(addressAdapter)
時,數據適配器被更新並且adapter#getCount
返回正確數量的元素。
我現在很困惑,請幫忙!
autoComplete()裏面是什麼? – 2016-04-27 22:22:34
這是我用來獲取列表的方法,但它工作正常,我相信問題不是來自這裏。 (如果它不工作,Log.i(「addresses」,suggestions_address.toString());'不會打印任何東西) –