私はApiRestで塗りつぶされたautocompleteTextViewアダプターをコーディングしています。私はrxJavaとRetrofit 2を使用していますが、非同期関数の値を返す方法がわからないため、フィルタ結果を取得できません。ここに私のコードRxJavaまたはRetrofit2でApiRestを消費するAutoCompleteTextViewアダプタのFilterResultsを返す方法
public class DiagnosticoAutoCompleteAdapter extends BaseAdapter implements Filterable {
...
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
final FilterResults filterResults= new FilterResults();
if(charSequence!=null) {
ApiUtils.getAPIServiceDos()
.getDiagnosticos(charSequence.toString())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<Diagnostico>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(List<Diagnostico> value) {
// HERE IT SHOWS ME THE SIZE E.G. 45 so The values are received correctly
System.out.println("tamaño diagnostico::"+value.size());
// HERE IT SHOWS ME THE OBJECT NAME IN POSITION 0 AND ITS OK
System.out.println("contenido diagg...."+value.get(0).getNombre());
filterResults.values=value;
filterResults.count=value.size();
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
//here i lost the information. the count is 0
System.out.println("tamaño de filtered results::"+filterResults.count);
return filterResults;
}
RxJava要求がOKに動作しますが、値を返すことはできませんです。
私の質問は、フィルタリングされた結果を返す方法です。
リクエストを変更して@Overrideメソッドに入れて問題を解決します。 protected void publishResults(CharSequence charSequence – matQ
リクエストを 'publishResults' – yosriz