Я хочу получить только число строк как значение Int из базы данных комнаты, а не из инициализированных LiveData
, таких как livedata.value?.size
Дао класс
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
fun getUserCount(): Int
}
Класс репозитория
class MyRepository(private val myDao: MyDao) {
fun getUserCount() = myDao.getUserCount()
}
Класс ViewModel
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = myRepository.getUserCount()
}
Это то, что я хочу. Но, как вы знаете, нам нужен доступ к базе данных комнаты в фоновом потоке, а не в mainthread
, поэтому я изменил код следующим образом: this
Дао класс
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
suspend fun getUserCount(): Int
}
Класс репозитория
class MyRepository(private val myDao: MyDao) {
suspend fun getUserCount() = myDao.getUserCount()
}
Класс ViewModel
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = viewModelScope.launch {
myRepository.getUserCount()
}
}
, если количество строк равно 1, Как я могу получить "1" в качестве обратного вызова?