我有RxSearchView:
RxSearchView.queryTextChanges(searchView) .filter(charSequence -> !TextUtils.isEmpty(charSequence)) .debounce(600, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe(query -> { Toast.makeText(this, query, Toast.LENGTH_SHORT).show(); });
当我搜索文字时 test 这个 Toast 向我展示 测验 ,之后,我想使用backspace清除搜索文本,问题是在 干杯 与文本一起显示 t .
test
Toast
测验
干杯
t
如何解决这个问题?
我试着用 .filter(item -> item.length() > 1) 但在这种情况下,这也不起作用 干杯 与文本一起显示 te
.filter(item -> item.length() > 1)
te
问题是按顺序出现的。 debounce 必须在之前 filter
debounce
filter
这将起作用:
RxSearchView.queryTextChanges(searchView) .debounce(600, TimeUnit.MILLISECONDS) .filter(charSequence -> !TextUtils.isEmpty(charSequence)) .observeOn(AndroidSchedulers.mainThread()) .subscribe(query -> { Toast.makeText(this, query, Toast.LENGTH_SHORT).show(); });