将 Single<Boolean> 转换为布尔值 (Kotlin)
Posted
技术标签:
【中文标题】将 Single<Boolean> 转换为布尔值 (Kotlin)【英文标题】:Convert Single<Boolean> to Boolean (Kotlin) 【发布时间】:2019-04-05 11:48:32 【问题描述】:我有一个可变的实时数据,用于调整布局中的可见性(使用绑定适配器)。我使用实时数据的布尔值通过下面的代码来实现这一点。
@BindingAdapter("viewVisibility")
fun setVisibility(view: View, visible: Boolean)
view.visibility = if (visible) View.VISIBLE else View.GONE
要获取此数据,我使用以下方法
Flowable.just(
Sdk().searchContact(CHATBOT_NAME)).map !(it.isEmpty())
it.isEmpty() 给了我一个 Flowable > 而不是 Flowable,我想将此 Single 转换为布尔值(将其作为参数提供给我的绑定适配器)但我找不到方法转换它。我的临时(可能是坏的)解决方案如下。
it.blockingLast().isEmpty() // Blocking last gives me a list so I can get non-single boolean with isEmpty. Since I need one element from search contact method blocking last or first works same in this case.
这是一个可接受的解决方案吗?如何将 Single 转换为普通布尔值?
【问题讨论】:
` 给了我一个 Flowable> 而不是 Flowable` - 你是什么意思? 似乎 *** 删除了 " 【参考方案1】:又是我,试试下面的代码:
fun doesExist(): Flowable<Boolean>
return Flowable.just(Single.just(Sdk().searchContact(CHATBOT_NAME)).map it.isEmpty()).map it.blockingGet()
【讨论】:
我要在一个小时内试试这个。顺便问一下,Flowable.just 之后附加 Single.just 的目的是什么?我认为没有必要,因为方法仍然返回 Single 没有它。 single.just 和 flowable.just 有不同的行为吗? 因为你想要 Single以上是关于将 Single<Boolean> 转换为布尔值 (Kotlin)的主要内容,如果未能解决你的问题,请参考以下文章
将 Single<List<Maybe<Book>>> 转换为 Single<List<Book>>
用于将 Single<[Element]> 转换为 Observable<Element> 的 rxSwift 扩展