【发布时间】:2021-11-11 08:50:13
【问题描述】:
我有这样的代码,用于按名称搜索流。
compositeDisposable.add(Observable.create(ObservableOnSubscribe<String> { subscriber ->
binding.searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextChange(newText: String?): Boolean {
subscriber.onNext(newText!!)
return false
}
override fun onQueryTextSubmit(query: String?): Boolean {
subscriber.onNext(query!!)
return false
}
})
})
.debounce(250, TimeUnit.MILLISECONDS)
.distinct()
.subscribe { text ->
val pagerPos = binding.streamsPager.currentItem
val currentFragment =
activity?.supportFragmentManager?.findFragmentByTag("f${pagerAdapter.getItemId(pagerPos)}")
(currentFragment as StreamFragment).onSearchHolder.onSearch(text)
}
)
它适用于 onQueryTextSubmit,但忽略 setOnQueryTextListener。因此,当我想删除符号并“重置”搜索时,我什么也得不到
如何解决这个问题?
【问题讨论】:
-
您确定要
distinct()吗?distinct()意味着 observable 永远不会发出相同的项目两次。也许你需要distinctUntilChanged()
标签: kotlin rx-java searchview