App*_*evo 5 java android android-livedata android-architecture-components
我用LiveData+ Transformations.map():
private final LiveData<List<Task>> observableTasks;
(...)
observableTasks = Transformations.map(tasksRepository.getTasks(), tasks-> filterTasks(tasks));
Run Code Online (Sandbox Code Playgroud)
如何强制LiveData刷新?我需要Transformations.map()准备新的清单。当用户更改过滤选项时,我需要filterTasks(tasks)再次调用并显示新的排序列表。来自存储库 ( tasksRepository.getTasks()) 的数据保持不变。
我想我找到了解决方案。我创建了附加LiveData字段filterChangeEvent。每次用户更改过滤顺序时,新值都会设置为filterChangeEvent。然后我使用switchMapwithfilterChangeEvent作为触发器:
observableTasks = Transformations.switchMap(filterChangeEvent, input -> {
final MediatorLiveData<List<Tasks>> result = new MediatorLiveData<>();
result.addSource(tasksRepository.getTasks(), tasks -> result.setValue(filterTasks(tasks)));
return result;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4900 次 |
| 最近记录: |