Проблема У меня есть список, который поступает из бэкэнда после вызова некоторого API, мне нужно преобразовать этот список в какой-то другой тип списка.После этого мне нужно добавить номер пустого объекта в окончательный список.(n число исходит из некоторой логики, которая подходит моему приложению.)
Чтобы решить эту проблему, я написал следующий код:
Observable.fromIterable(snipList).map(new Function<UserSnipModel, TaskContent>() {
@Override
public TaskContent apply(UserSnipModel userSnipModel) throws Exception {
String displayName = userSnipModel.getDisplayName();
TaskContent.Fields fields = new TaskContent.Fields(userSnipModel.getId(),
displayName, userSnipModel.getUrlCall(), userSnipModel.getRemarks(), userSnipModel.isEnableCall());
Drawable icon = DrawableUtils.getDrawable(HomeActivity.this, userSnipModel.getIconName(), R.drawable.ic_diamond);
return new TaskContent(fields, icon);
}
}).toList().toObservable().flatMap(new Function<List<TaskContent>, ObservableSource<List<TaskContent>>>() {
@Override
public ObservableSource<List<TaskContent>> apply(List<TaskContent> taskContents) throws Exception {
return Observable.range(0, totalNumberOfMembers - numberOfItems).map(new Function<Integer, List<TaskContent>>() {
@Override
public List<TaskContent> apply(Integer integer) throws Exception {
taskContents.add(new TaskContent(new TaskContent.Fields("",
"", "", "", false), null));
return taskContents;
}
});
}
})
.observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).safeSubscribe(new Observer<ListTaskContent>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(List<TaskContent> taskContents) {
//This method is called multiple time.
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onComplete() {
}
});
Когда я запускаю это, вызывается onNext()
несколько раз, который не работает, как ожидалось.Чтобы решить эту проблему, я добавил toList()
в flatMap()
, затем я получил List<List<TastContent>>
, что также не ожидается, так как мне нужно только List<TaskContent>
Что я могу сделать, чтобы решить эту проблему?
Заранее спасибо.