【问题标题】:Is LiveData observer needed in Kotlin and SQLite?Kotlin 和 SQLite 是否需要 LiveData 观察者?
【发布时间】:2020-05-29 16:23:40
【问题描述】:

我遇到了这样的代码并对此有疑问。 在ViewModel中,变量nights的声明和格式如下:

 private val nights = database.getAllNights()

val nightsString = Transformations.map(nights) { nights ->
    formatNights(nights, application.resources)
}

getAllNights() 是 Dao 中的一个函数,看起来像这样:

@Query("SELECT * FROM daily_sleep_quality_table ORDER BY nightId DESC")
fun getAllNights(): LiveData<List<SleepNight>>

getAllNights () 在代码中的其他任何地方都没有调用,但令我惊讶的是 LiveData 观察者 没有其他地方,尽管显示的文本会自动更新每次我使用按钮向数据库添加内容时的屏幕:

  android:text="@{sleepTrackerViewModel.nightsString}" />

在 Kotlin 和 SQLite 中只需要在 Dao 中返回 Live Data 而您不需要观察者吗?如果你什么时候需要?

【问题讨论】:

    标签: sqlite android-studio kotlin android-livedata observers


    【解决方案1】:

    他们很可能正在使用Databinding,这就是为什么您无法在任何地方看到观察者。

    您的布局文件中应该有这样的内容:

    <layout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto">
        <data>
            <variable
                name="viewmodel"
                type="com.myapp.data.ViewModel" />
        </data>
    </layout>
    

    在你的 build.gradle 中是这样的:

    android {
        ...
        dataBinding {
            enabled = true
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      相关资源
      最近更新 更多