我在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的新手,所以非常感谢您的帮助。谢谢。
答案 0 :(得分:0)
由于您要从会议室查询返回实时数据,因此应注意获取该值。 就像是 : locationResponseDao.searchForLocation(query).observeForever {响应-> locationResponse.value =响应
}