android - Observe Kotlin 中的返回值

标签 android kotlin mvvm observable

如何从观察者返回一个值?

    val clockInAndOutTime = ClockInAndOutTime()
    clockInAndOutTime.id = 12
    longToast("Name " +displayName(clockInAndOutTime.id.toString()))

 private fun displayName(userId: String): String {

        var name = ""
        organizationViewModel.refreshList()
        organizationViewModel.organization.observe(
            this, Observer { resource ->
                resource?.data.let {
                    it?.forEach { organization ->
                        if (organization.user_id == userId) {
                            name = organization.user_name!!
                            Log.d(TAG, "name is $name")
                        }else{
                            Log.d(TAG,"not found")
                        }
                    }
                }
            }
        )
        return name
    }

在 displayName 函数中,我们可以得到名字,但是在 toast 中,Name总是显示为空。

最佳答案

你不能那样做。在你的 Observer 中调用一个函数

private fun displayName(userId: String, onNameFound: (String) -> Unit): String {

    var name = ""
    organizationViewModel.refreshList()
    organizationViewModel.organization.observe(
        this, Observer { resource ->
            resource?.data.let {
                it?.forEach { organization ->
                    if (organization.user_id == userId) {
                        name = organization.user_name!!
                        Log.d(TAG, "name is $name")
                        onNameFound(name)
                    }else{
                        Log.d(TAG,"not found")
                    }
                }
            }
        }
    )
    return name
}

然后将其称为
displayName(clockInAndOutTime.id.toString()) { longToast("Name $it") }

关于android - Observe Kotlin 中的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57310829/

相关文章:

android - PagerSlidingTabStrip 不工作,但我的代码对我来说似乎没问题

java - 没有收到来自 URL 的响应,而是在 postman 中工作

android - 具有发光效果的动态生成线条

java - 如何区分没有互联网连接时抛出的异常与没有可用服务器/或错误 URL 的情况?

wpf - 绑定(bind)到带有可点击链接的列表框

c# - 在DataTrigger中未一致地调用Setter

WPF 从 UserControl 打开模态窗口

android - 在 Android 中检查空电子邮件字符串时出错

android - 防止在 BottomNavigationView 中快速单击

spring-boot - 无法访问本地主机上的 REST Controller (404)