有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用改型&RxJava,java使用不同的参数多次发送特定的请求

我有n个编辑文本和他们自己的文本:

编辑文本1->;正文:13

编辑文本2->;正文:15

编辑文本3->;正文:20

还有一个名为getNewValue(String currentValue)的API方法。它将根据当前值获取每个EditText的新值

场景: ^如果用户单击每个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) 个答案