Несоответствие типов при получении значения переменной из репозитория в ViewModel

Я использую LiveData и ViewModel из архитектурных компонентов Android.

Это мой класс репозитория -

class DataRepository {

    var imagePath : String = ""
}

Это моя модель просмотра, в которой я хочу получить значение imagePath из репозитория после обновления значения в репозитории -

class DataViewModel : ViewModel() {

    internal lateinit var imagePath : MutableLiveData<String>
    imagePath.value = DataRepository().imagePath

}

Проблема в том, что imagePath в DataRepository имеет тип String, а imagePath в DataViewModel имеет тип MutableLiveData.

Как мне присвоить значение imagePath из репозитория значению в ViewModel? Нужно ли мне выполнять приведение типов?


person Gissipi_453    schedule 26.05.2018    source источник


Ответы (1)


Есть метод: setValue в классе MutableLiveData. Следовательно, вы можете попробовать это:

internal lateinit var imagePath : MutableLiveData<String>
imagePath.setValue(DataRepository().imagePath)
person Cao Minh Vu    schedule 26.05.2018
comment
Спасибо. Всегда ли мне нужно использовать Room при использовании LiveData и ViewModel? Потому что я не видел учебника для LiveData и ViewModel без Room - person Gissipi_453; 26.05.2018
comment
Если вы не храните свои данные в базе данных (sqlite), вам не нужно использовать Room - person Cao Minh Vu; 26.05.2018