android - 将 Single<Boolean> 转换为 Boolean (Kotlin)

标签 android mvvm kotlin rx-java rx-java2

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

@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 < Single< Boolean>> 而不是 Flowable 我想把这个 Single 转换成一个 bool 值(把它作为我的绑定(bind)适配器的参数)但是我找不到方法转换它。我的临时(可能不好)解决方案如下。

  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 转换为普通 bool 值?

最佳答案

又是我,试试下面的代码:

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

关于android - 将 Single<Boolean> 转换为 Boolean (Kotlin),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53098138/

相关文章:

Android:如何从 res 文件夹中的 R.raw 获取文件路径?

c# - 从View的DataContext引用ViewModel可防止XAML设计器编辑

android - 带有 Android 架构组件的 MVVM

java - 动态添加 View 并调整父 ViewGroup 的大小

android - "kotlin"sqlite查询一条记录

java - 每个请求在 VertX 中设置单独的超时

java android 将资源文件路径传递给方法参数

javascript - keyPress 事件未在 Android 移动设备中触发

android - 没有用 ArrayList 填充 ListView

mvvm - 如何在 MVVM 应用程序中进行 View/ViewModel 绑定(bind),以便可以使用 Expression Blend?