Я пытаюсь преобразовать Flowable<List<TaskEntity>>
в Flowable<List<Task>>
, но что-то не так.
Чтобы понять проблему, я попытался преобразовать более простой список, и он работает нормально. Когда я пытаюсь применить ту же логику к моей реальной проблеме, она не работает.
Эта логика дает мне ожидаемый результат. [№ 1 № 2 № 3]
Flowable.fromArray(Arrays.asList(1,2,3))
.flatMapIterable(ids->ids)
.map(s->"No. "+s)
.toList()
.toFlowable()
.subscribe(
t -> Log.d(TAG, "getAllActiveTasks: "+t)
);
Эта логика не работает. Ничего не печатает
mTaskDao.getAllTasks(STATE_ACTIVE)
.flatMapIterable(task -> task)
.map(Task::create)
.toList()
.toFlowable()
.subscribe(
t -> Log.d(TAG, "getAllActiveTasks: "+t)
);
Редактировать 1
Вот так выглядит Task.create ().
public static Task create(TaskEntity eTask) {
Task task = new Task(eTask.getTaskId(), eTask.getTaskTitle(), eTask.getTaskStatus());
task.mTaskDescription = eTask.getTaskDescription();
task.mCreatedAt = eTask.getCreatedAt();
task.mTaskDeadline = eTask.getTaskDeadline();
return task;
}
Решение
Как упомянуто в комментариях, toList () может работать, только если исходящий источник имеет конечное число элементов для излучения. Поскольку метод Flowable from Dao содержит бесконечный поток объектов, метод toList () был использован мной неправильно.
Ознакомьтесь с этим комментарием для точного решения этой проблемы.
https://stackoverflow.com/a/50318832/4989435