使用改型&RxJava,java使用不同的参数多次发送特定的请求
我有n个编辑文本和他们自己的文本:
编辑文本1->;正文:13
编辑文本2->;正文:15
编辑文本3->;正文:20
还有一个名为getNewValue(String currentValue)
的API方法。它将根据当前值获取每个EditText的新值
场景:
^如果用户单击每个EditText,将发送{
我如何使用改型、RxJava和ViewModel实现这一目标强>
我尝试了以下代码:
片段:
editText1.setOnClickListener(getEtOnClickListener(editText1.getText().toString()));
editText2.setOnClickListener(getEtOnClickListener(editText2.getText().toString()));
editText3.setOnClickListener(getEtOnClickListener(editText3.getText().toString()));
private View.OnClickListener getEtOnClickListener(String currentValue) {
return v -> {
EditText et = (EditText) v;
viewModel.getNewValue(currentValue);
viewModel.getNewValueResponse().observe(getViewLifecycleOwner(), newValue -> et.setText(newValue));
viewModel.getNewValueError().observe(getViewLifecycleOwner(), throwable -> Log.i(TAG, "New Value Error -----> " + throwable));
};
}
视图模型:
private final MutableLiveData<String> newValueResponse = new MutableLiveData<>();
private final MutableLiveData<Throwable> newValueError = new MutableLiveData<>();
public void getNewValue(String currentValue) {
apiService.getNewValue(currentValue)
.subscribeOn(Schedulers.io())
.subscribe(new SingleObserver<String>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
compositeDisposable.add(d);
}
@Override
public void onSuccess(@NonNull String newValue) {
newValueResponse.postValue(newValue);
}
@Override
public void onError(@NonNull Throwable throwable) {
newValueError.postValue(throwable);
}
});
}
public LiveData<String> getNewValueResponse() {
return newValueResponse;
}
public LiveData<Throwable> getNewValueError() {
return newValueError;
}
ApiService:
@GET("Values/GetNewValue")
Single<String> getNewValue(@Query("currentValue") String currentValue);
共 (0) 个答案