前言
最近在学习《第一行代码》第三版的LiveData相关知识时候发现在使用如下代码的时候Transformations会标红报错:
val userName: LiveData = Transformations.map(userLiveData) { user ->
"${user.firstName} ${user.lastName}"
}
而我导入的依赖如下:
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
对着Transformations疯狂Alt + Enter也导不到合适的包,最后一通实验下终于找到原因。
原因
我试着降低了依赖版本,如下:
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0'
最后返回去对着Transformations进行Alt + Enter发现成功导包:
import androidx.lifecycle.Transformations
而我把依赖版本复原后,将上述导包语句粘贴上去,果不其然,报错了。
所以得出结论,应该是在最新的依赖版本中不再提供Transformations包,所以导致无法使用。
替换方法
既然老方法无法使用,那就必有替换方法,如下:
val userName: LiveData<String> = userLiveData.map { user ->
"${user.firstName} ${user.lastName}"
}
val userName: LiveData<String> = userLiveData.switchMap { user ->
"${user.firstName} ${user.lastName}"
}
不再使用Transformations,而实现的效果是一样的。