我使用 LiveData
+ Transformations.map()
:
private final LiveData<List<Task>> observableTasks;
(...)
observableTasks = Transformations.map(tasksRepository.getTasks(), tasks-> filterTasks(tasks));
如何强制
LiveData
刷新?我需要 Transformations.map()
来准备新列表。当用户更改过滤选项时,我需要再次调用 filterTasks(tasks)
并显示新的排序列表。来自存储库 ( tasksRepository.getTasks()
) 的数据保持不变。 最佳答案
我想我找到了解决方案。我创建了额外的 LiveData
字段 filterChangeEvent
。每次用户更改过滤顺序时,都会将新值设置为 filterChangeEvent
。然后我使用 switchMap
和 filterChangeEvent
作为触发器:
observableTasks = Transformations.switchMap(filterChangeEvent, input -> {
final MediatorLiveData<List<Tasks>> result = new MediatorLiveData<>();
result.addSource(tasksRepository.getTasks(), tasks -> result.setValue(filterTasks(tasks)));
return result;
});
关于java - LiveData, Transformations.map() - 如何在用户更改过滤顺序时强制刷新?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54362069/