我有一个用例,其中我必须将按钮按下转换为数据库提取。按下按钮后,我有一个可观察的。我正在将可观察对象的flatMap转换为另一个可观察对象,以从数据库中获取项目。
Observable<Customer> customerListObservable = getButtonPressObservable()
.map(event -> new Object())
.startWith(new Object())
.flatMap(event -> DatabaseHelper.getDatabase()
.select("select * from Customer")
.autoMap(Customer.class)
.toObservable());
但是,在按下按钮之前,我将需要首次从db获取项目。同样,在随后按下按钮时,应该再次进行获取。
除了上述代码以外,还有其他干净的方法可以生成初始值吗?
答案 0 :(得分:0)
我会观察到的东西
Observable<Customer> customerObservable = Observable.concat(getFromDb(), getAfterClick());
private Observable<Customer> getFromDb() {
return DatabaseHelper.getDatabase()
.select("select * from Customer")
.autoMap(Customer.class)
.toObservable());
}
private Observable<Customer> getAfterClick() {
return getButtonPressObservable()
.map(event -> new Object())
.startWith(new Object())
.flatMap(event -> getFromDb());
}