在Kotlin中实现MVVM架构时,ViewModel和LiveData是两个核心组件,它们能有效实现关注点分离和数据驱动UI的特性。以下是详细的实现指南:
一、MVVM组件职责划分
-
Model层
- 数据模型(Data Classes)
- 数据源(Repository):管理本地/远程数据
- 业务逻辑处理
-
ViewModel层
- 持有和管理与UI相关的数据
- 通过LiveData暴露数据状态
- 处理View层的事件响应
- 不持有View引用
-
View层(Activity/Fragment)
- 观察ViewModel的LiveData
- 处理UI渲染和用户交互
- 最小化业务逻辑
二、环境配置(build.gradle)
// AndroidX依赖
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.1'
implementation 'androidx.activity:activity-ktx:1.6.1' // 简化ViewModel获取
三、核心实现步骤
1. 数据模型与Repository
// 数据模型
data class User(val id: Int, val name: String)
// Repository示例
class UserRepository {
private val fakeRemoteData = listOf(User(1, "Alice"), User(2, "Bob"))
suspend fun loadUsers(): List<User> {
// 模拟网络请求
delay(1000)
return fakeRemoteData
}
}
2. ViewModel实现
class UserViewModel(
private val repository: UserRepository
) : ViewModel() {
private val _users = MutableLiveData<List<User>>()
val users: LiveData<List<User>>