Тип проблемы помехи при преобразовании LiveDataв LiveData <User> - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь объединить пример GitHub для архитектуры Android с привязкой данных.Для этого, я думаю, мне нужно добавить дополнительное преобразование из LiveData> в LiveData в UserViewModel :

val userResourceLiveData: LiveData<Resource<User>> = Transformations.switchMap(_login) { login ->
    if (login == null) {
        AbsentLiveData.create()
    }
    else {
        repository.loadUser(login)
    }
}

val userLiveData: LiveData<User> = Transformations.switchMap(userResourceLiveData) { userResource ->
    if (userResource == null) { // Error 1 on 'if'
        AbsentLiveData.create() // Error 2 on 'create()'
    }
    else {
        MutableLiveData(userResource.data)
    }
}

Однако при этом появляются 2 ошибки:

1) Ошибка вывода типа для выражения потока управления, пожалуйста, укажите его тип явно.

2) Ошибка вывода типа: недостаточно информации для вывода параметра T в fun create (): LiveData

Если я изменю код на это:

if (userResource == null) {
   AbsentLiveData.create<User>()
}

, тогда switchMap начнет жаловаться:

Ошибка вывода типа: Невозможно определить параметр типа Y в...

1) Почему это не работает так же?Я не ожидал, что определение типа требуется вообще, потому что отображение для <LiveData<Resource<User>>> работало правильно таким же образом.

2) Как устранить ошибки?

3) Возможноэто решение для применения привязки данных вообще будет неправильным подходом?

Фикс с этой конкретной проблемой на GitHub repo

1 Ответ

1 голос
/ 22 сентября 2019

Это работает для меня:

        if (userResource == null) {
            AbsentLiveData.create<User>()
        }
        else {
            MutableLiveData(userResource.data!!)
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...