Я пытаюсь объединить пример 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