使用kotlin实现ViewModel和LiveData,用于保存和调用数据的例子

75 阅读1分钟

首先我们创建了一个名为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架构,并使应用程序更加健壮和可维护。