- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 Rx
世界的新手,尝试使用 RxJava
、RxBinding
和 实现我的
。AutoCompleteTextView
>改造 2
这是我想出的麻烦:(也许我没有以正确的方式做。)
我有一个 AutoCompleteTextView
,我在这里创建了我的订阅和可观察对象:
subcription = RxTextView.textChangeEvents(clearableEditText)
.skip(1)
.debounce(400, TimeUnit.MILLISECONDS)
.map(new Func1<TextViewTextChangeEvent, String>() {
@Override
public String call(TextViewTextChangeEvent textViewTextChangeEvent) {
return textViewTextChangeEvent.text().toString();
}
})
.filter(new Func1<String, Boolean>() {
@Override
public Boolean call(String s) {
return s.length() > 2;
}
})
.flatMap(new Func1<String, Observable<List<String>>>() {
@Override
public Observable<List<String>> call(String text) {
return searchService.getAutoCompleteTermsObservable(text)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<List<String>>() {
@Override
public void onCompleted() {
Log.d("rx", "oncomplete");
}
@Override
public void onError(Throwable e) {
Log.e("rx", e.toString());
}
@Override
public void onNext(List<String> strings) {
Log.d("rx", strings.size()+"");
autoAdapter = new ArrayAdapter<>(MainActivity.this,
android.R.layout.simple_dropdown_item_1line, strings);
clearableEditText.setAdapter(autoAdapter);
clearableEditText.showDropDown();
}
});
我的问题是当我使用 setText()
方法设置我的 EditText 时,它会触发下拉菜单。例如,当我从 AutoCompleteTextView
的下拉列表中设置单词时,以及当我使用语音输入设置它时,它就会执行此操作。有没有办法避免在我手动设置时触发 onTextChanged
?或者我该如何解决?
最佳答案
您确实可以使用 unsubscribe()
,但根据您设置值的方式,您还可以使用 skipWhile
。这是一个例子:
public void handleTextChanges() {
final String textFromSource = "an";
Observable.fromArray("a", "an", "ancestor")
.skipWhile(new Predicate<String>() {
@Override
public boolean test(String value) throws Exception {
return textFromSource.contains(value);
}
})
.subscribe(new Consumer<String>() {
@Override
public void accept(String value) throws Exception {
Log.d("Rx", value);
}
});
}
这只会消耗 ancestor
(示例是 RxJava2,但存在相同的方法)。任何后续值,即使它们与 an
匹配,都将被使用。如果你总是想像这样进行检查,你可以使用 filter
关于android - 带有 Retrofit 2、RxJava 和 RxBinding 的 AutoCompleteTextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40577389/
我是新的 android 和 rxjava。我经历过很多使用 rxbindings 监听事件的例子。比如这个 RxView.clicks(b).subscribe(new Action1() {
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
试图找出为什么 RxTextView.textChanges 只发出初始值。我的理解是它应该向下游订阅发送所有新的文本更改。 这是代码 public class SignupFragment
我正在使用 RxBinding 并在 RecyclerView 适配器中的 onBindViewHolder 方法中创建一个订阅,它会重用项目。有什么简单的方法可以检查我是否已将订阅者分配给 Edit
背景 public Observable> search(SearchView searchView) { return RxSearchView.queryTextChanges(searc
这是我如何在 Kotlin 中使用 RxBinding: override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
这是我的代码: // Observable from RxView RxView.clicks(mBtnLogin) .throttleFirst(500, TimeUnit.
我正在使用 RxBindings 库中的 Focus Observable 来对焦点变化使用react。因为我想验证输入并触发动画,所以我需要两次焦点事件。 Jake Wharton 建议使用 sha
我在当前的 Android 应用程序中使用 RxBinding,并希望实现文本搜索功能。 我的代码如下:- compositeDisposable.add(RxTextView.textChangeE
我在我的项目中使用 butterknife 实现了 rxjava,如下所示: @BindView(R.id.login_et) EditText mLoginField; @BindView(R.id
我正在对 EditText 进行验证.我想要 CharSequence如果为空或不以 开头,则无效"https://" .我也在使用 接收绑定(bind) ,特别是 RxTextView .问题是当剩
我正在尝试通过一些延迟来监控文本更改,以避免来自听众的垃圾邮件。但我当然不想收到一些已经处理过的元素。 这个观察者 RxTextView.textChanges(editText)
我在 Fragment 中有一个 RecyclerView,项目点击是使用 RxJava2 处理的,如 this SO answer 中所述。 , 它在非 fragment 中工作正常。 privat
当用户在 SearchView 小部件中输入内容时,应用程序应该制作一个API 调用(在后台线程中)从服务器获取搜索结果,并在 RecyclerView 中显示它们(在 UI 线程中)。 我在 fra
我是 Rx 世界的新手,尝试使用 RxJava、RxBinding 和 实现我的 AutoCompleteTextView >改造 2。 这是我想出的麻烦:(也许我没有以正确的方式做。) 我有一个 A
我想在我的项目中为 Android UI 小部件使用 RxJava 绑定(bind) API。 因此遵循本网站的指导' https://github.com/JakeWharton/RxBinding
我是一名优秀的程序员,十分优秀!