android mvvm示例
时间: 2023-07-22 09:22:15 浏览: 134
Android Mvvm例子
好的,以下是一个简单的 Android MVVM 示例:
1. 创建一个 ViewModel 类
```kotlin
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class MainViewModel : ViewModel() {
val message = MutableLiveData<String>()
init {
message.value = "Hello World!"
}
}
```
这个 ViewModel 类通过 LiveData 提供了一个可观察的字符串数据。在初始化过程中,将这个字符串设置为 "Hello World!"。
2. 在布局文件中添加 DataBinding
```xml
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="viewModel"
type="com.example.MainViewModel" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{viewModel.message}" />
</LinearLayout>
</layout>
```
这个布局文件使用了 DataBinding,它包含一个 TextView,它的文本属性绑定到了 ViewModel 中的 message 属性。
3. 在 Activity 中设置 ViewModel 和 DataBinding
```kotlin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProvider
import com.example.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
val viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
binding.viewModel = viewModel
}
}
```
这个 Activity 使用了 DataBinding,它通过 ViewModelProvider 获取 ViewModel 实例,并将 ViewModel 实例设置到 DataBinding 中。这样,ViewModel 中的数据就可以与视图进行绑定了。
这个示例中,ViewModel 中的 message 属性绑定到了 TextView 的文本属性,因此当 ViewModel 中的 message 属性发生改变时,TextView 的文本也会相应改变。这就是 MVVM 架构的核心思想:将视图与数据通过 ViewModel 进行绑定,实现视图和数据的解耦合,使得代码更加清晰和易于维护。
阅读全文