问题标签 [rx-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
272 浏览

android - RxJava 过滤器行为

我编写的代码是去抖动文本EditText并过滤掉少于 4 个字符的文本:

当用户输入文本时 - 过滤工作正常,但当用户使用退格键时,最后一个空字符序列被传递到Subscriber

这是预期的行为吗?我应该在去抖后第二次使用过滤器运算符吗?如何正确过滤掉它?

0 投票
1 回答
631 浏览

android - 如何结合 RxBinding textView 和 PublicSubject?

我是 RxJava 的新手。我想要完成的是搜索功能,每次按键都是一个请求。我也希望能够明确地调用请求。

所以我用

RxTextView.textChanges(editText) .debounce .flatmap(request)第一部分。一切正常。

但是当手动调用请求部分时,我卡住了。我可以通过执行 editText.setText(editText.getText) 解决它来隐式触发 onTextChange ,但这感觉很脏。

我研究了该主题并找到了 PublishSubject。我提取了其中的实际请求部分,看起来有点像这样

有没有办法可以加入 textChanges Observable 和请求主题?换句话说,textChanges 流如何在搜索主题流中继续?除了从文本 observables 订阅者 onNext 调用 mPublishSubject.onNext 之外。

0 投票
1 回答
509 浏览

android - 如何在 RxAndroid 中单击时停止观察?

我正在学习 RxAndroid/RxBinding。我试图在按钮单击事件时停止可观察的序列,但不知道该怎么做。

如您所见,我有两个按钮,每个按钮都订阅了一个可观察的序列,我想要的是:

(1) 如果我先单击一个按钮,然后再单击另一个按钮,则第一个按钮的可观察操作应立即停止。

(2) 如果我单击一个按钮,然后再次单击它,observable 应该立即重新启动。目前,如果我再次单击它,它将等到当前的 observable 完成然后重新开始。

0 投票
1 回答
2043 浏览

rx-java - RxBinding 文档

RxBinding 没有自己的文档。这些命令对于专业开发人员来说可能很容易,但对于初学者来说并不容易。有没有人有自编文档或资源充足的链接?

0 投票
1 回答
4072 浏览

android - RecyclerView 项目单击使用 RxJava2 + RxBinding 在片段替换后不起作用

我在 Fragment 中有一个 RecyclerView,项目点击是使用 RxJava2 处理的,如this SO answer中所述,它在非片段中工作正常。

当片段中的 RecyclerView 只能正常工作一次。在项目单击片段被另一个片段替换。后按后,RecyclerView 片段出现,但点击不再起作用。

如果我删除该.takeUntil(RxView.detaches(parent))行,它会起作用。我认为当它不显示(分离)时,需要打破 RxView click 与 RecyclerView 的强绑定。我该如何解决这个问题?我希望使用附加/分离事件之一来解决问题,任何建议都会很棒!谢谢。

0 投票
1 回答
452 浏览

android - rxbinding 并点击右drawable

有没有办法通过使用 RxBinding 在 EditText 的右侧 drawable 上实现点击监听器?

我唯一发现的是:

但在这种情况下,我找不到有关点击位置的信息。

这是我使用 RxJava 的方式:

但我觉得我在重新发明轮子

0 投票
1 回答
97 浏览

android - 订阅对话框按钮点击时的 NPE

我在我的应用程序中创建了一个自定义对话框,我想像这样添加按钮点击 observables:

然后我创建我的对话框并订阅我的活动中的按钮 1 点击,如下所示:

这会导致空指针异常,就像button1订阅点的空值一样。

我知道一个可能的解决方法是PublishSubject在对话框中使用 a 而不是尝试直接订阅按钮 click observable,但这似乎是一个非常不雅的解决方案。

在此先感谢您的任何建议!

0 投票
1 回答
297 浏览

rx-java - RxView 点击和 onError

使用 RxView 来处理我必须实现 onError 的点击。我知道 onError 总是存在于观察者中,但是否存在 RxView.clicks(myview) 实际调用 onError 的情况?

假设永远不会调用它来定义一个实现空 onError 的类是一个好的模式吗?我没有找到任何说明这是真的但我想不出实际调用 onError 的情况

0 投票
1 回答
260 浏览

rx-android - rxBindings - 如何在去抖动点击事件时知道消费者类型应该是什么?

使用rxBindings我试图减慢点击事件,但我想知道需要什么参数。

例如,这是我在 imageview 上做的一个电话。所以 ImageView v;

0 投票
2 回答
709 浏览

android - RxView.clicks crashes app

Trying to do some basic RxJava stuff to lear how it works and was trying to show a progress on button click in a login form (with the RxBindings lib) and then make it disappear after a second. But after the progress is shown and I want to hide it the app crashes. Here's the code I trying to do this with,

and the crash I get is,

ComposedException 1 : android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6357) at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:909) at android.view.ViewGroup.invalidateChild(ViewGroup.java:4690) at android.view.View.invalidateInternal(View.java:11801) at android.view.View.invalidate(View.java:11765) at android.view.View.setFlags(View.java:9704) at android.view.View.setVisibility(View.java:6693) at android.widget.FrameLayout.setVisibility(FrameLayout.java:208) at com.sample.android.rxlogin.ui.LoginActivity.showProgress(LoginActivity.java:60) at com.sample.android.rxlogin.ui.LoginActivity.access$000(LoginActivity.java:19) at com.sample.android.rxlogin.ui.LoginActivity$1.accept(LoginActivity.java:44) at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:59) at io.reactivex.observers.SerializedObserver.onNext(SerializedObserver.java:111) at io.reactivex.internal.operators.observable.ObservableDelay$DelayObserver$1.run(ObservableDelay.java:84) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:59) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:51) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() at android.os.Handler.(Handler.java:200) at android.os.Handler.(Handler.java:114) at android.widget.Toast$TN.(Toast.java:344) at android.widget.Toast.(Toast.java:100) at android.widget.Toast.makeText(Toast.java:258) at com.sample.android.rxlogin.ui.LoginActivity$2.accept(LoginActivity.java:49) at com.sample.android.rxlogin.ui.LoginActivity$2.accept(LoginActivity.java:46) at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:72) at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:62) at io.reactivex.observers.SerializedObserver.onNext(SerializedObserver.java:111) at io.reactivex.internal.operators.observable.ObservableDelay$DelayObserver$1.run(ObservableDelay.java:84) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:59) at io.reactivex.internal.schedulers.Schedul

I can't understand why this should crash though, since I am using observeOn() with the main Android thread. Could someone please explain what's wrong here? and whats the right way to do this?