将Single <boolean>转换为Boolean(Kotlin)

时间:2018-11-01 09:10:27

标签: android mvvm kotlin rx-java rx-java2

我有一个可变的实时数据,可用于调整布局中的可见性(使用绑定适配器)。我使用实时数据的布尔值通过以下代码实现此目的。

@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转换为普通布尔值?

1 个答案:

答案 0 :(得分:2)

又是我,请尝试以下代码:

fun doesExist(): Flowable<Boolean> {
   return Flowable.just(Single.just(Sdk().searchContact(CHATBOT_NAME)).map{ it.isEmpty()}).map {it.blockingGet() }
}