как использовать RxJava Function .filter() для конкретного состояния, я хочу только лишь данных, идентификатор 168, это правильный способ сделать или придется изменить свой код стиль дайте мне ваше ценное предложение. (Без использования RetroLambda :))RX + ДООСНАСТКА filtring данные серверов Response
NetworkRequest networkRequest = new NetworkRequest(this);
RestApi api = networkRequest.getInstance().create(RestApi.class);
subscription = api
.school()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Response<SchoolList>>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted: completed");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError: on Error");
e.printStackTrace();
}
@Override
public void onNext(Response<SchoolList> schoolResponse) {
Log.d(TAG, "onNext: " + schoolResponse.getSchoolList().size());
}
});
у меня есть ответ, как
{ "schoolList": [
{
"name": "A University",
"id": "168"
},
{
"name": "Alba Sciences",
"id": "271"
},
{
"name": "B University",
"id": "168"
}]
}
я есть попробовать этот способ, но получить отмечая в (On Next)
NetworkRequest networkRequest = new NetworkRequest(this);
RestApi api = networkRequest.getInstance().create(RestApi.class);
subscription = api
.school()
.filter(new Func1<Response<SchoolList>, Boolean>() {
@Override
public Boolean call(Response<SchoolList> schoolListResponse) {
Log.d(TAG, "condition: computing 2");
return schoolListResponse.getSchoolList().get(0).getId().equals("168");
}
})
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Response<SchoolList>>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted: completed");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError: on Error");
e.printStackTrace();
}
@Override
public void onNext(Response<SchoolList> schoolResponse) {
Log.d(TAG, "onNext: " + schoolResponse.getSchoolList().size());
}
});
проверить мой [ответ] (HTTP : //stackoverflow.com/a/40887006/3629732) –