- 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/
当用户点击 ACTV 并找到他正在搜索的内容时,他再次选择 ACTV 的唯一原因是搜索其他内容。我正在寻找一种方法,当用户在 ACTV 中进行搜索并且搜索文本位于 ACTV 字段中(建议菜单已关闭)时
当我单击 AutoCompleteTextView 的建议时,我希望光标移动到下一个可用的 EditBox 或 AutoCompleteTextView。 我在下面附上了我的布局和我的应用图像文件。在
我有一个 AppCompatAutoCompleteTextView,其 anchor 比 AppCompatAutoCompleteTextView 更靠下。这是设计使然,无法更改。当我在下拉菜单上
我正在使用 3 个 AutocompleteTextViews 来建议来自数据库的条目。我对 AutocompleteTextView 进行了子类化处理,以便在单击时将默认文本设置为 null,并在移
我正在使用 AutoCompleteTextView 创建下拉菜单。如何删除列表顶部和底部的默认边距? 重新创建: List dropdownItems
我正在尝试让 TextWatcher 与 AutoCompleteTextView 一起工作,但遇到了一些问题。我面临的问题是,当我开始输入文本时,如果数据输入的长度只有一个字符,我在 AutoCom
即使我没有在下拉列表项布局中设置边距,下拉列表也带有左右边距。我希望它与 autocompletetextview 的宽度相匹配。我怎样才能做到这一点? 这是我的 AutoCompleteTextVi
我的应用实现了一个 HashMap,这样当在 AutoCompleteTextView editText 中键入 key 时,并且用户单击下拉项,该值将显示在textView上。 唯一的问题是,单击的
这里是 Android 菜鸟,之前是 iOS、.Net、C 和 Fortran。 如果我有一个带有 1000 多个字符串的 ArrayAdapter,我如何修改 AutoCompleteTextVie
嗨,我刚刚开始学习 android Studio,我想要一个 AutoCompletetextView 和一个按钮,如果用户输入未在数组列表中列出,则添加用户输入。我的 AutoCompleteTex
我正在开发一个使用 AutoCompleteTextView 的应用程序,但遇到了一些问题。请在下面查找问题的详细信息。 数据中存在以下值: 1)曼尼什·洛根·杰恩 2)M.J.(洛根·费恩) 3)洛
我正在尝试根据另一个 View (微调器)中选择的选项来更改 AutoCompleteTextView 的建议列表。不幸的是,这个 TextView 的适配器似乎没有从另一个 View 的 setOn
我有这个布局: 使用这种风格: @color/text_input_layout_outlined_box_stroke @color/green_2 我试图在自动
我正在尝试使用 AutoCompleteTextView 进行过滤,但过滤器出现问题。它返回 ArrayList 中的所有项目,而不是过滤后的项目。下面是我的代码: Filter nameFilte
我想制作一个 AutoCompleteTextview ,它将从内部存储加载以前保存的建议。我成功地将字符串从内部存储加载到字符串数组(我使用日志记录来检查......)。 然后,当我将字符串数组加载
我有一个 AutoCompleteTextView,我想在它上面设置一个过滤器,我遇到的问题是当我去输入一些东西时它只会让我在文本字段中输入 1 个字符。如果我从代码中删除 textView.setF
我有两个自动完成 TextView 例如,如果任何人选择自动完成 TextView “HUB ID”位置#3,则另一个自动完成 TextView “HUBName”必须强制位于位置 3即希望它们都处于
您好 Android 开发人员, 我有一个关于自动完成 TextView 的问题。我在平板电脑上开发,我很好地定制了它。当我在平板电脑上运行它时,它看起来像这样: 这实际上是我想要的 - 所有可见的东
我正在处理一项要求,其中使用自动完成 TextView 来获取匹配的Localities。用户必须输入几个字符,然后从服务器返回与这些字符匹配的 Localities 列表。自动完成 TextView
使用 Bootstrap 的 Web 应用程序,有这样的输入区域。 在 Android 中有没有像这样实现 EditText 的库? 最佳答案 是的,完成的泡泡在Android中被称为“筹码”。工作解
我是一名优秀的程序员,十分优秀!