在 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。
我已经使用 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。