需要 RXJava 帮助替换 AsyncTask
AsyncTask replacement with RXJava help needed
我是 Reactive 的新手,所以请放轻松,但我正在尝试替换当前 运行 的异步任务以实现自动建议功能的文本更改。下面是我的 RX 所在的位置:
rest.getMemberList(etSearch.getText().toString())//rest interface
.subscribeOn(Schedulers.io())
.observeOn(RxAndroidSchedulers.mainThread())
.subscribe(new Action1<List<Member>>() {
@Override
public void call(List<Member> results) {
ListView ResultsListView = (ListView) findViewById(R.id.list);
MemberAdapter = new ResultRowAdapter(mContext, getLayoutInflater());
MemberAdapter.setMemberList(results);
ResultsListView.setAdapter(MemberAdapter);
}
};
所以,我要找的是一些东西:
1) 我的 Observable 是否朝着正确的方向前进?
2)我将如何处理其中的订阅部分?
3)关于用 RX 替换异步任务的任何其他建议,因为这是我需要做的几个任务中的第一个。
编辑:
这是我得到的地方,感觉好像离我更近了,但我仍然需要 guidance.etSearch 是我的 EditText 视图
if(etSearch.length()>2){
Observable<String> o1 = Observable.just(etSearch.getText().toString());
o1.subscribeOn(Schedulers.io())
.observeOn(RxAndroidSchedulers.mainThread()).subscribe(new Action1<String>() {
@Override
public void call(String s) {
List<Member> MemberList =rest.getMemberList(s);
ListView ResultsListView = (ListView) findViewById(R.id.list);
MemberAdapter = new ResultRowAdapter(mContext, getLayoutInflater());
MemberAdapter.setMemberList(MemberList);
ResultsListView.setAdapter(MemberAdapter);
}
});}
我是这样做的:
Observable<String> o1 = RxTextView.textChangeEvents(etSearch)
.map(new Func1<RxTextViewTextChangeEvent, String>() {
@Override
public String call(RxTextViewTextChangeEvent rxTextViewTextChangeEvent) {
return etSearch.getText().toString();
}
}
);
o1.observeOn(RxAndroidSchedulers.mainThread()).filter(new Func1<String, Boolean>() {
@Override
public Boolean call(String s) {
return s.length()>2;
}
}).subscribe(new Action1<String>() {
@Override
public void call(String s) {
if (s.length() > 2) {
List<Member> MemberList = rest.getMemberList(s);
ListView ResultsListView = (ListView) findViewById(R.id.list);
MemberAdapter = new ResultRowAdapter(mContext, getLayoutInflater());
MemberAdapter.MemberList(MemberList);
ResultsListView.setAdapter(MemberAdapter);
}
}
});
我是 Reactive 的新手,所以请放轻松,但我正在尝试替换当前 运行 的异步任务以实现自动建议功能的文本更改。下面是我的 RX 所在的位置:
rest.getMemberList(etSearch.getText().toString())//rest interface
.subscribeOn(Schedulers.io())
.observeOn(RxAndroidSchedulers.mainThread())
.subscribe(new Action1<List<Member>>() {
@Override
public void call(List<Member> results) {
ListView ResultsListView = (ListView) findViewById(R.id.list);
MemberAdapter = new ResultRowAdapter(mContext, getLayoutInflater());
MemberAdapter.setMemberList(results);
ResultsListView.setAdapter(MemberAdapter);
}
};
所以,我要找的是一些东西: 1) 我的 Observable 是否朝着正确的方向前进? 2)我将如何处理其中的订阅部分? 3)关于用 RX 替换异步任务的任何其他建议,因为这是我需要做的几个任务中的第一个。
编辑:
这是我得到的地方,感觉好像离我更近了,但我仍然需要 guidance.etSearch 是我的 EditText 视图
if(etSearch.length()>2){
Observable<String> o1 = Observable.just(etSearch.getText().toString());
o1.subscribeOn(Schedulers.io())
.observeOn(RxAndroidSchedulers.mainThread()).subscribe(new Action1<String>() {
@Override
public void call(String s) {
List<Member> MemberList =rest.getMemberList(s);
ListView ResultsListView = (ListView) findViewById(R.id.list);
MemberAdapter = new ResultRowAdapter(mContext, getLayoutInflater());
MemberAdapter.setMemberList(MemberList);
ResultsListView.setAdapter(MemberAdapter);
}
});}
我是这样做的:
Observable<String> o1 = RxTextView.textChangeEvents(etSearch)
.map(new Func1<RxTextViewTextChangeEvent, String>() {
@Override
public String call(RxTextViewTextChangeEvent rxTextViewTextChangeEvent) {
return etSearch.getText().toString();
}
}
);
o1.observeOn(RxAndroidSchedulers.mainThread()).filter(new Func1<String, Boolean>() {
@Override
public Boolean call(String s) {
return s.length()>2;
}
}).subscribe(new Action1<String>() {
@Override
public void call(String s) {
if (s.length() > 2) {
List<Member> MemberList = rest.getMemberList(s);
ListView ResultsListView = (ListView) findViewById(R.id.list);
MemberAdapter = new ResultRowAdapter(mContext, getLayoutInflater());
MemberAdapter.MemberList(MemberList);
ResultsListView.setAdapter(MemberAdapter);
}
}
});