Котлин;найти объект в LiveData по идентификатору - PullRequest
0 голосов
/ 05 февраля 2019

Я новичок в котлине.У меня есть LiveData объекта List of User, как показано ниже:

data class User(id: String, userName: String, name: String)

Мне нужно найти только один объект, который имеет userName "xxxx".Я пробовал этот код:

user = userViewModel.allUsers.value!!.find{ it.userName == userName}

Но он не работал

UserViewModel, как показано ниже:

class UserViewModel(application: Application) : AndroidViewModel(application) {

    private var parentJob = Job()
    private val coroutineContext: CoroutineContext
        get() = parentJob + Dispatchers.Main
    private val scope = CoroutineScope(coroutineContext)

    private val repository: UserRepository
    val allUsers: LiveData<List<User>>

    init {
        val usersDao = AppDatabase.getDatabase(application, scope).userDao()
        repository = UserRepository(usersDao)
        allUsers = repository.allUsers
    }

    fun getByUserName(userName: String)  = scope.launch(Dispatchers.IO) {
        repository.findUserById(userName)
    }

    fun insert(user: User) = scope.launch(Dispatchers.IO) {
        repository.insert(user)
    }
    fun update(user: User) = scope.launch(Dispatchers.IO) {
        repository.update(user)
    }

    override fun onCleared() {
        super.onCleared()
        parentJob.cancel()
    }
}

Большое спасибо

...