LiveDataне является подклассом LiveData - PullRequest
0 голосов
/ 17 октября 2019

У меня есть абстрактный класс ViewModel, назовем его AbstractListViewModel. Он содержит список элементов типа MutableLiveData >. У JSONObject есть 2 дочерних элемента: JSONChildOne и JSONChildTwo. Я хотел бы переопределить свойство в дочернем объекте AbstractViewModel для типа MutableLiveData >.

Я попытался переопределить в дочернем классе MutableLiveData >

AbstractListViewModel:

abstract val itemsList : MutableLiveData<List<JSONObject>>

ChildOneListViewModel:

override val itemsList =  MutableLiveData<List<JSONChildOne>>()

Тип свойства "MutableLiveData >", который не является подтипом переопределения

1 Ответ

0 голосов
/ 17 октября 2019

Вы не можете сделать это, List<Child> не расширяет List<Parent> (см. здесь для обсуждения почему).

Вы должны использовать универсальный аргумент в вашем AbstractViewModel, например:

abstract class AbstractViewModel<T: JSONObject> {
    abstract val itemsList : MutableLiveData<List<T>>
}

class ChildOneListViewModel : AbstractViewModel<JSONChildOne> {
    override val itemsList : MutableLiveData<List<JSONChildOne>>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...