Нерешенная ссылка: Преобразования после обновления зависимости жизненного цикла

После обновления зависимости жизненного цикла с 2.6.0-alpha04 на 2.6.0-beta01 я получил ссылку Unresolved: Transformations и не может класс import androidx.lifecycle.Transformations.

import androidx.lifecycle.Transformations
...
var myList: LiveData<List<Bookmark>> = Transformations.switchMap(
            bookMarkType
        ) { input: Int? ->
            when (input) {
                ARTICLE_BOOKMARK -> return@switchMap repository.articleBookmarks
                WEBSITE_BOOKMARK -> return@switchMap repository.websiteBookmarks
                LINK_BOOKMARK -> return@switchMap repository.linkBookmarks
            }
            repository.websiteBookmarks
        }
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Начиная с версии 2.6.0-alpha05:

Преобразования теперь написаны на Котлине. Это несовместимое с исходным кодом изменение для тех классов, написанных на Kotlin, которые напрямую использовали такой синтаксис, как Transformations.map. Код Kotlin теперь должен использовать синтаксис метода расширения Kotlin, который ранее был доступен только при использовании lifecycle-livedata-ktx. При использовании языка программирования Java версии этих методов, использующие метод androidx.arch.core.util.Function, устарели и заменяются версиями, принимающими Kotlin Function1.

Итак, вместо использования Transformations вам нужно использовать функцию расширения напрямую myLiveData.switchMap или myLiveData.map

Итак, чтобы исправить это использование:

var myList: LiveData<List<Bookmark>> = bookMarkType.switchMap { input: Int? ->
            when (input) {
                ARTICLE_BOOKMARK -> return@switchMap repository.articleBookmarks
                WEBSITE_BOOKMARK -> return@switchMap repository.websiteBookmarks
                LINK_BOOKMARK -> return@switchMap repository.linkBookmarks
            }
            repository.websiteBookmarks
        }

Другие вопросы по теме