输入后RXSearchView延迟

时间:2016-09-09 06:57:26

标签: android

我已经实现了SearchView小部件和ContentProvider集成。

我担心的是不要让用户在SearchView的EditText中为每个输入或删除的字母垃圾邮件Web服务。因此,应在用户停止输入后触发ContentProvider的查询,比如阈值为2秒。

我没有运气这样做,我认为RXSearchView是使用去抖动的解决方案。但是,即使设置10秒延迟也不起作用。我是在正确的轨道上吗?或者我需要使用不同的方法/属性。

int time = 10000;
RxSearchView.queryTextChanges(searchView)
.delay(time, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
.debounce(time, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
.throttleWithTimeout(time, TimeUnit.MILLISECONDS)
.distinctUntilChanged()
.observeOn(AndroidSchedulers.mainThread());

1 个答案:

答案 0 :(得分:0)

这是我使用的方法并且工作正常:

1-首先为Listener创建setOnQueryTextChangedListener

searchView.setOnQueryTextListener(new OnQueryTextListener()...);

2-在您的onQueryTextChange方法调用onNext订阅者:

                    @Override
                    public void onQueryTextChange(String s) {
                        subscriber.onNext(s);
                    }

3-使用debounce方法发出:

               .filter(new Func1<String, Boolean>() {
                    @Override
                    public Boolean call(String s) {                //make sure query is not empty
                        return !TextUtils.isEmpty(s);
                    }
                })
                .debounce(500, TimeUnit.MILLISECONDS) //wait 500ms to 
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<TESTTTT>())

有关完整代码,请参阅iosched中的this commit;代码的主要部分位于onCreateOptionsMenu