在 rxjava 中结合文本更改和去抖动以进行编辑文本

Combine both on text change and debounce in rxjava for edittext

我已经使用 rxjava2 一段时间了,但主要是样板,我不清楚它的功能。

我应该创建一个搜索 Edittext 稍后调用方法。我通过以下代码让它工作:

RxTextView.textChanges(edittextSearch)
                .filter(charSequence -> charSequence.length() > 3)
                .debounce(800, TimeUnit.MILLISECONDS)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(string -> {
                    search(string.toString());
                }, error -> {
                    Log.e("ERROR","ERROR LISTENING: " + error.getMessage());
                });

但是,我还需要这个 EditText 的另一个功能,即在我输入时,即使只有一个字符,我也会显示一个 "X" 图标来清除输入,或者如果用户手动删除所有文本,则隐藏它。

我不知道上面的 textChanges 方法是否可以做到这一点,或者我必须为 edittextSearch

添加另一个文本观察器

感谢您的宝贵时间。

您可以通过使用 TextInputLayout 并添加 app:endIconMode="clear_text" 来实现您想要的效果。它是 material 设计库的一部分,有很多关于如何使用它们的指南。

这将在用户开始输入时自动添加一个清除图标,单击该图标将清除文本并更新您的 textChanges observable。