gpt4 book ai didi

android - 当 EditText 有文本时启用按钮 (RxAndroid)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:59:35 28 4
gpt4 key购买 nike

RxJava/RxAndroid 的新手,我发现缺少示例令人不安。作为开始使用 Rx 的一种方式,我喜欢尝试做一些小事。基本上,如果 EditText 中输入了文本,则启用其下方的 Button

我遇到了 this答案,但作者的编辑并没有真正展示如何完全实现这样的东西。

根据我收集到的信息,我可以使用 RxBindings创建一个 Observable,例如:

Observable<CharSequence> observable = RxTextView.textChanges(mEditText);

假设我现在需要 .subcribe() 一个 Observer 来观察 observable 的变化,但我不确定这是怎么回事完成。

此外,如果需要,您将如何在不使用 RxBindings 的情况下创建 EditTexts Observable?

编辑虽然Retrolambda存在,说明如何在没有 lambda(或两者)的情况下实现这一点的答案会有所帮助。

最佳答案

Observable<CharSequence> observable = RxTextView.textChanges(mEditText);
observable.map(new Func1<CharSequence, Boolean>() {
@Override
public Boolean call(CharSequence charSequence) {
return charSequence.length() > 0;
}
}).subscribe(new Subscriber<Boolean>() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {

}

@Override
public void onNext(Boolean aBoolean) {
mButton.setEnabled(aBoolean);
}
});

不要忘记保留对订阅的引用并在您不再需要时取消订阅(例如,在 onDestroy 中)。

RxJava-Android-Samples包含适用于 Android 的 RxJava 示例。一探究竟。您可能想查看 Form Validation example .

Also, how would you create the EditTexts Observable without using RxBindings if needed?

您可以查看实现。它是开源的。它在内部使用 TextWatcher 来监视更改并在文本更改时发出项目。

关于android - 当 EditText 有文本时启用按钮 (RxAndroid),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34431474/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com