我们得首先明白ViewModel只是一个记录业务逻辑和屏幕状态的容器,LiveData是一个可以被观察的数据集合。
第一步,创建容器
我们新建一个ViewModel容器类。比如MyViewModel
class MyViewModel : ViewModel() {}
第二步,在容器中创建LiveData可被观察的数据,比如一个String类型的数据。
class MyViewModel : ViewModel() {
val currentName: MutableLiveData<String> by lazy {
MutableLiveData<String>()
}
}
第三步,在界面组件(Activity或Fragment)中去使用。
首先添加一个观察者,这样就可以实时的去关键currentName的变动。
//我们先在Activity中添加ViewModel
private val model: MyViewModel by viewModels()
//在组件中使用。
@Composable
fun GetMessage(model: MyViewModel, cotnent: ComponentActivity) {
var message by remember {
mutableStateOf("")
}
//建立一个观察者
var observer = Observer<String> {
message = it
}
//添加观察者,cotnent:Activity对象,observer观察者对象
model.currentName.observe(cotnent, observer)
Text(text = "内容:$message")
}
第四步,设置改变LiveData数据
model.currentName.setValue("这是更新的内容")