【发布时间】:2020-06-06 19:31:11
【问题描述】:
我是 RxJava 新手,为了学习一些基础知识,我创建了一个小项目,在其中我试图观察我的 EditText 以了解输入文本的变化并更新 TextView。
代码如下:
这些分别是我的 Observable 和 Observers 的实例变量
private Observable<String> editTextObservable;
private Observer<String> textViewObserver;
我正在使用 RxBinding 并订阅文本更改,如下所示:
我在onCreate()做这个@
RxTextView.textChanges(etData).
subscribe(new Action1<CharSequence>() {
@Override
public void call(CharSequence charSequence) {
editTextObservable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(@NonNull ObservableEmitter<String> emitter) throws Throwable {
Log.d(TAG, "onTextChanged subscribe: " + etData.getText().toString());
emitter.onNext(etData.getText().toString());
}
});
}
});
我正在像这样更新我的 TextView:
textViewObserver = new Observer<String>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.d(TAG, "onSubscribe: ");
}
@Override
public void onNext(@NonNull String value) {
Log.d(TAG, "onNext: ");
tvResult.setText(value);
}
@Override
public void onError(@NonNull Throwable e) {
Log.d(TAG, "onError: ");
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete: ");
}
};
当我运行该应用程序时,它不会给我任何错误,我可以在日志中看到正在调用 onTextChanged() 侦听器,但调用永远不会转到 subscribe() 方法,我无法看到任何结果文本视图。我在这里做错了什么?
【问题讨论】:
-
是否允许使用扩展库来观察 onTextChange 事件?有一个用于 ui 元素的各种事件的包装器,它将提供一个 observable。
-
@HansWurst 你的意思是 RxBinding?
-
是的,这就是我的意思。
-
@HansWurst 我用 RxBinding 进行了尝试,但仍然看不到结果。我也更新了问题
标签: android rx-java2 rx-android