首先我们创建了一个名为MyViewModel的ViewModel类,并定义了一个名为_myData的MutableLiveData,它可以保存一个String类型的数据。我们还创建了一个名为myData的LiveData,它是_myData的不可变引用,可以用于从视图中访问数据。
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class MyViewModel : ViewModel() {
private val _myData = MutableLiveData<String>()
val myData: LiveData<String> = _myData
fun saveData(data: String) {
_myData.value = data
}
}
在ViewModel中,我们还实现了一个名为saveData的函数,它接受一个String类型的数据,并将其保存到_myData中。在这个例子中,我们使用_myData.value属性来设置LiveData的值。
接下来,我们可以在Activity或Fragment中使用MyViewModel类来保存和调用数据:
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
saveButton.setOnClickListener {
val data = dataEditText.text.toString()
viewModel.saveData(data)
}
getDataButton.setOnClickListener {
val data = viewModel.myData.value
dataTextView.text = data
}
}
}
在上面的代码中,我们首先使用ViewModelProvider获取MyViewModel实例,并将其存储在viewModel变量中。接下来,我们将saveButton的点击事件与viewModel.saveData函数连接起来,以便保存用户输入的数据。我们还将getDataButton的点击事件与viewModel.myData.value连接起来,以便从ViewModel中获取数据,并将其设置到dataTextView中显示。
总的来说,这个例子演示了如何使用Kotlin的ViewModel和LiveData来保存和调用数据。通过使用这些类,我们可以实现MVVM架构,并使应用程序更加健壮和可维护。