RxSearchView搜索

时间:2017-05-03 16:31:14

标签: android rx-java2

我的问题有两个问题。我曾经使用过RxSearchView一段时间。我使用mapfilter和最后switchMap来查询来自api的搜索事件。首先在mapfilter函数中,我更新了这样的ui:

.filter(new Predicate<String>() {
                        @Override
                        public boolean test(String s) throws Exception {
                            if (searchViewQueryTextEvent.queryText().toString().length() < 3 && mUserList != null) {
                                mUserList.clear();
                            getActivity().runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    mUserSearchAdapter.notifyDataSetChanged();
                                }
                            });
                        }
                            return s.length() > 2;
                        }
                    })

从这些函数中继续更新ui是一个好习惯吗? 其次,删除字符不能以这种方式处理。请给我建议/链接。我是Rx的新手。非常感谢!

1 个答案:

答案 0 :(得分:1)

  

从这些函数中继续更新ui是一个好习惯吗?

您不需要也不应该在此使用runOnUIThread()。您可以向响应链中的observeOn运算符添加多个调用以切换线程。以下是有关线程的一些链接:

  

其次,删除字符无法以这种方式处理。请给我建议/链接。

而不是过滤,而应使用debounce()运算符。 这是2017年Droidcon波士顿的link to my talk,其中我谈到了debounce()switchMap()的自动搜索问题。滚动到~25:00时间。您可以找到处理字符删除的demo code以及blog post

我希望这会有所帮助。