私はいくつかのREST API(実際はNokia Here Geocoder Autocomplete APIですが、それほど重要ではない)を介してオートコンプリート提案の実装に取り組んでいます。 AutoCompleteTextView
のカスタムアダプターを書いています。コールバック付きの非同期API用Android AutocompleteTextViewアダプタ
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をここで呼び出す必要がある場合はどうなりますか?
performFilteringでこのように呼び出すにはどうすればよいですか?
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-で見たいと思うかもしれませんアレイアダプターが更新されたとき –