Как получить обратный звонок из комнаты базы данных android Kotlin - PullRequest
1 голос
/ 05 февраля 2020

Я хочу получить только число строк как значение 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" в качестве обратного вызова?

1 Ответ

0 голосов
/ 05 февраля 2020

Использовать COUNT

@Query("SELECT COUNT(column_name or primary key column name) from table_name ")
fun getCount(): Long

, вызывать getCount() из хранилища

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...