LiveData和ViewModel联合使用,简单入门

我们得首先明白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("这是更新的内容")

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注