MutableLiveData<Pair<Float, Float>>() -> 无法重新分配 Val
MutableLiveData<Pair<Float, Float>>() -> Val cannot be reassigned
在我的 Android 项目中的 ViewModel 中:
import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
class MainViewModel(application: Application) : AndroidViewModel(application) {
private var waitressCallContainerHeights = MutableLiveData<Pair<Int, Int>>()
fun init() {
waitressCallContainerHeights.value.first = 200
}
}
但是我在这一行遇到编译错误:
waitressCallContainerHeights.value.first = 200
Val cannot be reassigned
我想在 fun init
中设置 first 和 second 值
虽然您的 liveData 是可变的,但 Pair 本身不是。你需要做:
waitressCallContainerHeights.value = Pair(200,300/* for example */)
您还可以使用 apply
在声明本身上初始化变量,如下所示:
private var waitressCallContainerHeights = MutableLiveData<Pair<Int, Int>>().apply { value = Pair(200, 300) }
在我的 Android 项目中的 ViewModel 中:
import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
class MainViewModel(application: Application) : AndroidViewModel(application) {
private var waitressCallContainerHeights = MutableLiveData<Pair<Int, Int>>()
fun init() {
waitressCallContainerHeights.value.first = 200
}
}
但是我在这一行遇到编译错误:
waitressCallContainerHeights.value.first = 200
Val cannot be reassigned
我想在 fun init
虽然您的 liveData 是可变的,但 Pair 本身不是。你需要做:
waitressCallContainerHeights.value = Pair(200,300/* for example */)
您还可以使用 apply
在声明本身上初始化变量,如下所示:
private var waitressCallContainerHeights = MutableLiveData<Pair<Int, Int>>().apply { value = Pair(200, 300) }