我通過一些REST API(它實際上是諾基亞在這裏Geocoder Autocomplete API,但它並不那麼重要)的工作實現自動完成建議。我爲AutoCompleteTextView
編寫自定義適配器。Android AutocompleteTextView適配器異步API與回調
public class GeoAutocompleteAdapter extends BaseAdapter implements Filterable {
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected Filter.FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
// obtain some autocomplete data
filterResults.values = res;
filterResults.count = res.size();
return filterResults;
}
//...
}
//...
}
據我瞭解,部分"obtain some autocomplete data"
運行中的線程池。如果我以同步的方式獲得自動完成的結果 - 它的工作。例如,我可以使用HttpURLConnection
和InputStream
- 這裏所有的同步阻塞呼叫都能很好地工作。
但是如果我需要在這裏調用一些API,這些API以異步方式操作,比如通過Callback \ Listener?
如何在執行過濾器時調用類似這樣的東西?
request.execute(
new ResultListener<List<com.here.android.mpa.search.Location>>() {
@Override
public void onCompleted(List<Location> locations, ErrorCode errorCode) {
}
//...
}
如何推遲從方法返回,而回調不給我一個結果?
由於提前,
檢查自動搜索例如地方,你可能想看看http://stackoverflow.com/questions/2671404/autocompletetextview-not-displaying-result-even-當最arrayadapter-是更新的 –