Android 如何跳过observable中的当前项并转到列表中的下一项?
我有一个显示问题的测验应用程序,每个问题都有一个倒计时计时器,它可以完美地工作,但我想知道一旦用户单击按钮,如何发出列表中的下一项。 下面是我模拟从api获取问题的代码Android 如何跳过observable中的当前项并转到列表中的下一项?,android,rx-java,Android,Rx Java,我有一个显示问题的测验应用程序,每个问题都有一个倒计时计时器,它可以完美地工作,但我想知道一旦用户单击按钮,如何发出列表中的下一项。 下面是我模拟从api获取问题的代码 questionObservable = repository.getQuestionsfromlocal() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread())
questionObservable = repository.getQuestionsfromlocal()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.concatMap(s -> {
if (s.getQuestion().equals("first")){
previousquestion_time.setValue(s.getDuration());
return Observable.just(s).delay(0, TimeUnit.SECONDS , AndroidSchedulers.mainThread());
}else{
return Observable.just(s).delay(previousquestion_time.getValue(), TimeUnit.SECONDS , AndroidSchedulers.mainThread());
}
});
questionObserve = new Observer<Question>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull Question question) {
singlequestion.setValue(question);
previousquestion_time.setValue(question.getDuration());
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
}
};
questionObservable=repository.getQuestionsfromlocal()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.concatMap(s->{
如果(s.getQuestion().equals(“first”)){
上一个问题_time.setValue(s.getDuration());
返回Observable.just.delay(0,TimeUnit.SECONDS,AndroidSchedulers.mainThread());
}否则{
返回Observable.just.delay(前面的问题_time.getValue(),TimeUnit.SECONDS,AndroidSchedulers.mainThread());
}
});
questionObserve=新观察者(){
@凌驾
订阅时的公共无效(@NonNull-d){
}
@凌驾
public void onNext(@NonNull-Question-Question){
设置值(问题);
上一个问题\u time.setValue(问题.getDuration());
}
@凌驾
公共无效onError(@NonNull可丢弃e){
}
@凌驾
未完成的公共空间(){
}
};
这段代码以可观察的形式返回我的问题列表。从可迭代开始,然后我使用concat map根据前面的问题答案持续时间为每个问题提供一定的延迟
它自动工作没有问题
我需要的是,当我点击一个按钮时,它会跳过当前元素,转到下一个元素并继续流程。如果我们看到一些代码,会更容易。我想有几种方法可以做到这一点,你的observable会给你一个列表。只需创建计数器变量,在单击时递增它,并将列表中的下一个元素置于计数器位置。@Fred我现在编辑了我的问题