【发布时间】:2019-08-22 00:31:57
【问题描述】:
我在 DAO 类中使用此方法来访问数据库中的数据:
@Query("select * from location_search_results WHERE searchQuery = :query")
fun searchForLocation(query: String): LiveData<LocationSearchResponse>
我这样称呼它:
locationResponse = locationResponseDao.searchForLocation(query)
Log.d("db", locationResponse.value.toString())
然后我观察这个值:
fun bindUI() = launch {
val locationResults = locationViewModel.locationResponse
val owner = viewLifecycleOwner
locationResults.observe(owner, Observer {
if (it == null) return@Observer
initRecyclerView(it.features.toLocationSearchResultListItem())
})
}
我的问题是,每当我这样做时,观察者总是返回 null,即使数据库中有与查询匹配的数据。我也尝试过使用 select * from location_search_results 以防它是 searchQuery 参数的问题,但它也返回 null。
这是数据库的样子:
我是 Room 和 SQLite 的新手,非常感谢任何帮助。谢谢。
【问题讨论】:
-
locationResponse.value.好吧,不要这样称呼它,使用observe -
你必须观察livedata,因为在执行Log.d时livedata的值仍然是null,那是因为android在不同的线程中运行查询
-
我稍后会观察数据,它仍然为空,抱歉我已经编辑了帖子以澄清
标签: android sqlite kotlin android-room