Функция Transformations.map
- ваш лучший выбор для достижения этой цели.
Чтобы получить больше контекста, Transformations.map
возьмет LiveData<T>
, выполнит преобразование и превратит его в LiveData<Y>
.
Метод принимает LiveData<T>
, и лямбда-выражение, целью которого является преобразование значения, испускаемого LiveData
, T
, в новое значение Y
.
Transformations.map
примет значение, выданное данным LiveData<T>
, и отобразит и вернет LiveData<Y>
.
Примечание. Это преобразование будет выполнено в главном потоке.
Источник: https://developer.android.com/reference/android/arch/lifecycle/Transformations#map
Быстрый ответ:
fun getNameValueBeanLiveData(itemId: Int): LiveData<List<NameValueBean> {
val itemLiveData: LiveData<Item> = repository.getItemLiveData(itemId)
return Transformations.map(itemLiveData) { item ->
val nameValueBeanList = mutableListOf<NameValueBean>()
return nameValueBeanList.apply {
add("field1", item.field1)
add("field2", item.field2)
...
}.toList()
}
}